From 8bc3a7c85f67fb81bb3d71c8254e68f3b88e9169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= Date: Thu, 29 Jun 2023 20:15:38 +0100 Subject: [PATCH] fix: socket variable testing for undefined (#1726) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: socket variable testing for undefined Avoid issue where socket event was not triggered and local socket vraible is not defined. This issue is reproducible only using deno. * chore: made socket test capture simpler Only controls the execution of the section that uses socket. * Update src/index.js Co-authored-by: Linus Unnebäck * Update index.js --------- Co-authored-by: Linus Unnebäck Co-authored-by: Jimmy Wärting --- src/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 9013f1de2..3f6f5f004 100644 --- a/src/index.js +++ b/src/index.js @@ -362,8 +362,11 @@ function fixResponseChunkedTransferBadEnding(request, errorCallback) { const {headers} = response; if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { response.once('close', hadError => { - // if a data listener is still present we didn't end cleanly - const hasDataListener = socket.listenerCount('data') > 0; + // tests for socket presence, as in some situations the + // the 'socket' event is not triggered for the request + // (happens in deno), avoids `TypeError` + // if a data listener is still present we didn't end cleanly + const hasDataListener = socket && socket.listenerCount('data') > 0; if (hasDataListener && !hadError) { const err = new Error('Premature close');