auth ({ apiKey, apiSecret, calc, dms } = {}) {
    if (this._socketArgs.apiKey || this._socketArgs.apiSecret) {
      debug('error: auth credentials already provided! refusing auth')
      return
    }

    this._socketArgs.apiKey = apiKey
    this._socketArgs.apiSecret = apiSecret

    if (_isFinite(calc)) this._authArgs.calc = calc
    if (_isFinite(dms)) this._authArgs.dms = dms
    if (apiKey) this._authArgs.apiKey = apiKey
    if (apiSecret) this._authArgs.apiSecret = apiSecret

    this._sockets.forEach(s => {
      if (!s.ws.isAuthenticated()) {
        s.ws.updateAuthArgs(this._authArgs)
        s.ws.auth()
      }
    })
  }
Authenticates all existing & future sockets with the provided credentials.
Does nothing if an apiKey/apiSecret pair are already known.

@param {object} args - arguments
@param {string} args.apiKey - saved if not already provided
@param {string} args.apiSecret - saved if not already provided
@param {number} [args.calc] - default 0
@param {number} [args.dms] - dead man switch, active 4