From 5d7ecff418b29743fe54d9c08c10f0e73d90c51f Mon Sep 17 00:00:00 2001 From: Bastiaan <17990055+bbassie@users.noreply.github.com> Date: Thu, 22 Oct 2026 18:14:17 +0200 Subject: [PATCH] Accept ECONNREFUSED for the dropped HttpCloser request (#1133) Node 26.12.1 (CVE-2026-105481) makes the http agent check a kept-alive socket for pending data before reusing it. The queued request now sees the server's EOF, opens a new connection to the closed server and gets ECONNREFUSED instead of ECONNRESET. Either way the request is dropped. Co-authored-by: Claude Opus 5.5 --- test/controller/HttpCloser.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/controller/HttpCloser.js b/test/controller/HttpCloser.js index f072d051..87d0e72c 100644 --- a/test/controller/HttpCloser.js +++ b/test/controller/HttpCloser.js @@ -201,7 +201,8 @@ function serverSuite(proto) { let response = await request; assert.equal(response.statusCode, 200, "non-200 response status code"); assert.equal(response.body.toString(), "ok-6", "response content does not match expected"); - await assert.rejects(droppedRequest, { code: "ECONNRESET" }); + // Node 26.12.1+ discards the closed socket and gets refused on reconnect + await assert.rejects(droppedRequest, { code: /^ECONN(RESET|REFUSED)$/ }); }); it("should abort requests that take too long to respond", async function() {