@@ -13,8 +13,18 @@ var parseResponse = require('./helpers/parseResponse');
1313 * @param {Function } errorCallback - A callback called when a request failed.
1414 * @param {string } [data] - Data to send in the request.
1515 * @param {Object } [additionalHeaders] - Additional headers. IMPORTANT! This object does not contain default headers needed for every request.
16+ * @param {number } [timeout] - socket timeout for the http request.
1617 */
17- var httpRequest = function ( method , uri , data , additionalHeaders , responseParams , successCallback , errorCallback ) {
18+ var httpRequest = function ( options ) {
19+ var method = options . method ;
20+ var uri = options . uri ;
21+ var data = options . data ;
22+ var additionalHeaders = options . additionalHeaders ;
23+ var responseParams = options . responseParams ;
24+ var successCallback = options . successCallback ;
25+ var errorCallback = options . errorCallback ;
26+ var timeout = options . timeout ;
27+
1828 var headers = { } ;
1929
2030 if ( data ) {
@@ -38,6 +48,7 @@ var httpRequest = function (method, uri, data, additionalHeaders, responseParams
3848 port : parsedUrl . port ,
3949 path : parsedUrl . path ,
4050 method : method ,
51+ timeout : timeout ,
4152 headers : headers
4253 } ;
4354
@@ -55,6 +66,7 @@ var httpRequest = function (method, uri, data, additionalHeaders, responseParams
5566 port : proxyUrl . port ,
5667 path : parsedUrl . href ,
5768 method : method ,
69+ timeout : timeout ,
5870 headers : {
5971 host : parsedUrl . host ,
6072 ...headers ,
@@ -111,7 +123,14 @@ var httpRequest = function (method, uri, data, additionalHeaders, responseParams
111123 } ) ;
112124 } ) ;
113125
126+ request . on ( 'timeout' , function ( error ) {
127+ request . abort ( ) ;
128+ } ) ;
129+
114130 request . on ( 'error' , function ( error ) {
131+ if ( request . aborted ) {
132+ error = new Error ( 'Request timed out: ' + error ) ;
133+ }
115134 responseParams . length = 0 ;
116135 errorCallback ( error ) ;
117136 } ) ;
0 commit comments