How to handle etimedout error on this call ?
var remotePath = "myremoteurltocopy" var localStream = fs.createWriteStream("myfil");; var out = request({ uri: remotePath }); out.on('response', function (resp) { if (resp.statusCode === 200) { out.pipe(localStream); localStream.on('close', function () { copyconcurenceacces--; console.log('aftercopy'); callback(null, localFile); }); } else callback(new Error("No file found at given url."), null); })
There are a way to wait for longer? or to request the remote file again?
What exactly can cause this error? Timeout only?
In the handler you can check if the error is ETIMEDOUT and apply your own logic: if (err. message. code === 'ETIMEDOUT') { /* apply logic */ } . If you want to request for the file again, I suggest using node-retry or node-backoff modules.
The ETIMEDOUT error means that the request took more time than the webserver configuration allows and the connection has been closed by the server.
ESOCKETTIMEDOUT means network timeout, you know that is a common problem when dealing with request/response so you should have handled the error in callback by yourself. All reactions.
This is caused when your request response is not received in given time(by timeout
request module option).
Basically to catch that error first, you need to register a handler on error
, so the unhandled error won't be thrown anymore: out.on('error', function (err) { /* handle errors here */ })
. Some more explanation here.
In the handler you can check if the error is ETIMEDOUT and apply your own logic: if (err.message.code === 'ETIMEDOUT') { /* apply logic */ }
.
If you want to request for the file again, I suggest using node-retry or node-backoff modules. It makes things much simpler.
If you want to wait longer, you can set timeout
option of request yourself. You can set it to 0 for no timeout.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With