(req, socket, err)
| 992 | }; |
| 993 | |
| 994 | function onSocketNT(req, socket, err) { |
| 995 | if (req.destroyed || err) { |
| 996 | req.destroyed = true; |
| 997 | |
| 998 | function _destroy(req, err) { |
| 999 | if (!req.aborted && !err) { |
| 1000 | err = new ConnResetException('socket hang up'); |
| 1001 | } |
| 1002 | // ERR_PROXY_TUNNEL is handled by the proxying logic. |
| 1003 | // Skip if the error was already emitted by the early socketErrorListener. |
| 1004 | if (err && err.code !== 'ERR_PROXY_TUNNEL' && |
| 1005 | !socket?._hadError) { |
| 1006 | emitErrorEvent(req, err); |
| 1007 | } |
| 1008 | req._closed = true; |
| 1009 | req.emit('close'); |
| 1010 | } |
| 1011 | |
| 1012 | if (socket) { |
| 1013 | if (!err && req.agent && !socket.destroyed) { |
| 1014 | socket.emit('free'); |
| 1015 | socket.removeListener('error', socketErrorListener); |
| 1016 | } else { |
| 1017 | finished(socket.destroy(err || req[kError]), (er) => { |
| 1018 | if (er?.code === 'ERR_STREAM_PREMATURE_CLOSE') { |
| 1019 | er = null; |
| 1020 | } |
| 1021 | _destroy(req, er || err); |
| 1022 | }); |
| 1023 | return; |
| 1024 | } |
| 1025 | } |
| 1026 | |
| 1027 | _destroy(req, err || req[kError]); |
| 1028 | } else { |
| 1029 | tickOnSocket(req, socket); |
| 1030 | req._flush(); |
| 1031 | } |
| 1032 | } |
| 1033 | |
| 1034 | ClientRequest.prototype._deferToConnect = _deferToConnect; |
| 1035 | function _deferToConnect(method, arguments_) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…