在请求模块中捕获“套接字挂断”错误

我正在使用请求模块向第三方API发送请求(GET&POST)。

我正在使用超时选项来限制响应的等待时间(不能等太久)。

问题是,有时会引发下面的exception:

错误:套接字挂在Socket.ocket.socketCloseListener(http.js:1526:23)在Socket.mit(events.js:117:20)上的createHangUpError(http.js:1476:15)在TCP.close(net.js :465:12)

我猜这是因为请求被中止(由于超时),但套接字仍然打开,并在2分钟后挂断。

问题是 – 当一个请求被中止时如何closures套接字,或者如何捕获这个exception并且正常处理。

这里是我使用的相关代码:

var request = require('request'), requestOptions = { url: 'http://example.com/api', timeout: 1000 }; request(requestOptions, function onResponse(error, response, body) { if (error) { //Trying to close the socket (to prevent socket hang up errors) //**Doesn't help** this.req.socket.destroy(); this.req.destroy(); return; } //Handle the response });