code: function _request(requestOptions, userOptions, successCallback, errorCallback) {
      var successCb = successCallback,
        errorCb = errorCallback,
        request;
  
      // This verification allows not to pass any options, and have callbacks in
      // its place. It also allows passing *null* if there is no success callback.
      if (Utils.isFunction(userOptions) || userOptions === null) {
  
        successCb = userOptions;
        errorCb = successCallback;
  
      } else if (Utils.isObject(userOptions)) {
  
        // If options is an object, merge it with the request options. Callbacks
        // can be included in this object or as separate parameters (same as
        // `EVT.api()`).
        requestOptions = Utils.extend(requestOptions, userOptions);
  
      }
  
      // Use current scope's API key to perform the request.
      requestOptions.authorization = this.scope.apiKey;
  
      // If parentScope is set to operator scope, use the operator API key.
      if (EVT.Operator && this.scope.parentScope instanceof EVT.Operator) {
        requestOptions.authorization = this.scope.parentScope.apiKey;
  
        // If we're working in application scope as an operator,
        // we need to send the application id as a parameter.
        if (this.scope instanceof EVT.App) {
          requestOptions.params = requestOptions.params || {};
          requestOptions.params.project = this.scope.project;
        }
      }
  
      // Actually make the request and handle its response, by forwarding to
      // the raw `EVT.api()` method.
      request = EVT.api(requestOptions, successCb, errorCb);
  
      return _handleResponse.call(this, request);
    }
docs: Helper method to prepare and handle a request giving the parameters passed to any of the resource methods. Allow to have callbacks as separate parameters or included in the options object, providing exactly the same interface as `EVT.api()`.