koichik / node-tunnel

Node HTTP/HTTPS Agents for tunneling proxies
MIT License
537 stars 78 forks source link

bad proxy will raise exception: TypeError: options.request.emit is not a function #40

Open sshxmz opened 4 years ago

sshxmz commented 4 years ago

When I use an agent created by tunnel with proxy, if the proxy is not reachable, wrong exception raised.

Simple codes:

let a = tunnel.httpOverHttp({proxy: {host: 'nosuch.host.com', port: 8080}});
    return got(anurl, {agent: a})
    .then( res => {
        if (res.statusCode === 200) return res.body;
        else throw new Error('http status ' + res.statusCode + ', ' + res.body);
    }); 

exception raised:

TypeError: options.request.emit is not a function
    at ClientRequest.onError (/home/xxx/nodejs/proxylib/node_modules/tunnel/lib/tunnel.js:183:21)
    at Object.onceWrapper (events.js:300:26)
    at ClientRequest.emit (events.js:210:5)
    at Socket.socketErrorListener (_http_client.js:406:9)
    at Socket.emit (events.js:210:5)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)

But EHOSTNOTFOUND or ENETWORK are expected error.

KhafraDev commented 4 years ago

I am getting this as well

malsatin commented 4 years ago

I had the same issue, it appeared that I have used the wrong config

abriginets commented 4 years ago

Same issue here

nikhell86 commented 3 years ago

if authentication parameters are bad or any proxy parameter is bad, exceptions are thrown.. Is there a way to catch these exceptions and show to the user what went wrong?