How to handle ETIMEDOUT error?

135,323

Solution 1

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.

Solution 2

We could look at error object for a property code that mentions the possible system error and in cases of ETIMEDOUT where a network call fails, act accordingly.

if (err.code === 'ETIMEDOUT') {
    console.log('My dish error: ', util.inspect(err, { showHidden: true, depth: 2 }));
}

Solution 3

In case if you are using node js, then this could be the possible solution

const express = require("express");
const app = express();
const server = app.listen(8080);
server.keepAliveTimeout = 61 * 1000;

https://medium.com/hk01-tech/running-eks-in-production-for-2-years-the-kubernetes-journey-at-hk01-68130e603d76

Share:
135,323
mcbjam
Author by

mcbjam

Innovation for passion

Updated on December 03, 2020

Comments

  • mcbjam
    mcbjam over 3 years

    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?