function create( ref, err, statusCode ) {
	statusCode = statusCode || 200;

	/**
	* Mock HTTP request constructor.
	*
	* @constructor
	* @param {Object} opts - request options
	* @param {Function} clbk - callback to invoke after receiving a response
	* @returns {Request} mock HTTP request object
	*/
	function Request( opts, clbk ) {
		var self;
		if ( !( this instanceof Request ) ) {
			return new Request( opts, clbk );
		}
		self = this;
		EventEmitter.call( this );

		ref._opts = opts; // eslint-disable-line no-underscore-dangle

		setTimeout( onTimeout, 0 );

		return this;

		/**
		* Callback invoked in the next event loop.
		*
		* @private
		* @returns {void}
		*/
		function onTimeout() {
			if ( err ) {
				return self.emit( 'error', err );
			}
			clbk( new Response( statusCode ) );
		}
	}
	Request.prototype = Object.create( EventEmitter.prototype );

	Request.prototype.constructor = Request;

	Request.prototype.end = noop;

	return Request;
}
Returns a mock HTTP request constructor.

@param {Object} ref - reference to parent object
@param {(Error|null)} err - error object
@param {number} [statusCode=200] - response status code
@returns {Request} mock HTTP request constructor