nodejs/node

https.request timeout options doesn't work

Open

#23,282 opened on Oct 5, 2018

View on GitHub
 (9 comments) (4 reactions) (0 assignees)JavaScript (117,218 stars) (35,535 forks)batch import
help wantedhttps

Description

Node version 8.11.3. 64-bit Windows 8.1

As I understood from docs, timeout property in https.request options sets socket connection timeout. I set it to minimum - 1 millisecond and it should definitely trigger 'timeout' event.

    const options = {
        host: 'yobit.net',
        path: '/api/3/depth/ltc_btc',
        timeout: 1
    }
    const req = https.request(options, res => {
    });
    
    req.on('timeout', () => {
        console.error('request timeout');
    })
    req.end();

I expect 'reqest timeout' console message but it doen't appear.

However, when I create my custom https Agent with overriden createConnection method that sets initial socket timeout to 1 millisecond there:

MyAgent.prototype.createConnection = function() {
    const socket = https.Agent.prototype.createConnection.apply(this, arguments);
    socket.setTimeout(1);
    return socket;
}

and run the first code with agent parameter set to my custom agent, now it fires 'timeout' event.

Contributor guide

https.request timeout options doesn't work · nodejs/node#23282 | Good First Issue