code: function handler(res, rej) {
  
      // Inject the `authCode` into the options, slight chicken and egg issue
      if (varType(options, 'String') && ~options.indexOf('{authCode}')) {
        options = options.replace('{authCode}', self.authCode)
      }
  
      // Fill in any empty authCode parameter
      if (varType(options, 'Object') && options.hasOwnProperty('authCode')) {
        options.authCode = self.authCode
      }
  
      // Run the soap call
      self.client[method](options, function(err, resp) {
        if (err) {
          debug('[exec] method=`%s` err=`%s`', method, err)
  
          // Recast the error with the `SoapError` to extract error data from the 
          // XML response, then check if this is an authentication issue
          var custom = new Errors.SoapError(err)
          if (custom.code === 'INVALID_AUTH_CODE') {
            custom = new Errors.AuthenticationError(err)
            self.authCode = undefined
          }
          return rej(custom)
        }
        debug('[exec] done: method=`%s`', method)
        res(resp)
      })
    }
docs: Promise handler