@@ -159,7 +159,7 @@ TwitterClient.prototype._rest = function( requestMethod, requestPath, requestArg
159159 console . error ( 'No callback for ' + requestMethod + ' ' + requestUri ) ;
160160 }
161161 }
162- return this . call ( requestMethod , requestUri , requestArgs , function ( res , err ) {
162+ return this . call ( requestMethod , requestUri , requestArgs , TWITTER_API_TIMEOUT , function ( res , err ) {
163163 if ( ! res ) {
164164 callback ( null , err , 0 ) ;
165165 return ;
@@ -215,9 +215,10 @@ TwitterClient.prototype.stream = function( requestPath, requestArgs, callback ){
215215 } ;
216216 }
217217 var client = this ;
218- return this . call ( requestMethod , requestUri , requestArgs , function ( res ) {
218+ return this . call ( requestMethod , requestUri , requestArgs , 0 , function ( res , err ) {
219219 if ( ! res ) {
220- callback ( ) ;
220+ callback ( null , err ) ;
221+ return ;
221222 }
222223 client . response = res ;
223224 res . setEncoding ( 'utf8' ) ;
@@ -237,7 +238,7 @@ TwitterClient.prototype.stream = function( requestPath, requestArgs, callback ){
237238 } ) ;
238239}
239240
240- TwitterClient . prototype . call = function ( requestMethod , requestUri , requestArgs , callback ) {
241+ TwitterClient . prototype . call = function ( requestMethod , requestUri , requestArgs , timeout , callback ) {
241242 requestMethod = String ( requestMethod || 'GET' ) . toUpperCase ( ) ;
242243 // build and sign request parameters
243244 var params = new OAuthParams ( requestArgs ) ;
@@ -262,17 +263,17 @@ TwitterClient.prototype.call = function( requestMethod, requestUri, requestArgs,
262263 http . path += '?' + query ;
263264 }
264265 var req = require ( 'https' ) . get ( http , callback ) ;
265- req . on ( 'socket' , function ( socket ) {
266- socket . setTimeout ( TWITTER_API_TIMEOUT ) ;
267- socket . on ( 'timeout' , function ( ) {
268- req . abort ( ) ;
266+ if ( timeout ) {
267+ req . on ( 'socket' , function ( socket ) {
268+ socket . setTimeout ( timeout ) ;
269+ socket . on ( 'timeout' , function ( ) {
270+ console . error ( 'Request timeout in ' + requestUri ) ;
271+ req . abort ( ) ;
272+ } ) ;
269273 } ) ;
270- } ) ;
274+ }
271275 req . on ( 'error' , function ( e ) {
272276 console . error ( String ( e ) ) ;
273- if ( 'ECONNRESET' === e . code ) {
274- e = { message : 'Request timeout' , code : 408 } ;
275- }
276277 callback ( null , e ) ;
277278 } ) ;
278279 if ( 'POST' === requestMethod && query ) {
@@ -313,7 +314,7 @@ TwitterClient.prototype._oauthExchange = function( requestUri, requestArgs, call
313314 console . error ( 'No callback for POST ' + requestUri ) ;
314315 }
315316 }
316- this . call ( 'POST' , requestUri , requestArgs , function ( res , err ) {
317+ this . call ( 'POST' , requestUri , requestArgs , TWITTER_API_TIMEOUT , function ( res , err ) {
317318 if ( ! res ) {
318319 callback ( null , err || { } , 0 ) ;
319320 return ;
0 commit comments