docs: function(requestNumber, requestHandler, startTime, requestOptions) {
  
        // **EVENT:** the `request` event is emitted when an HTTP request starts, with the request number and options as arguments.
        this.emit('request', requestNumber, requestOptions);
  
        var deferred = q.defer();
  
        // The returned promise is resolved if the request succeeds, rejected if it fails.
        var r = request(requestOptions, function(err, response, body) {
          if (err) {
            return deferred.reject(err);
          }
  
          deferred.resolve([ response, body ]);
        });
  
        // If specified, the request handler function is called with the request object.
        if (requestHandler) {
          requestHandler(r);
        }
  
        return deferred.promise;
      }