From cd6737fd84bdb7caf2a319d3579573a49f9d238d Mon Sep 17 00:00:00 2001 From: Edgars Beigarts Date: Wed, 29 Apr 2026 20:21:03 +0300 Subject: [PATCH] chore: matches the sibling responseStream.on(aborted) handler and added tests (#7149) Co-authored-by: Jason Saayman --- lib/adapters/http.js | 2 +- tests/unit/adapters/http.test.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/adapters/http.js b/lib/adapters/http.js index e0efc409..6337bf33 100755 --- a/lib/adapters/http.js +++ b/lib/adapters/http.js @@ -912,7 +912,7 @@ export default isHttpAdapterSupported && }); responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; + if (rejected) return; reject(AxiosError.from(err, null, config, lastRequest, response)); }); diff --git a/tests/unit/adapters/http.test.js b/tests/unit/adapters/http.test.js index 50f9ba90..7d83281d 100644 --- a/tests/unit/adapters/http.test.js +++ b/tests/unit/adapters/http.test.js @@ -823,6 +823,28 @@ describe('supports http with nodejs', () => { await stopHTTPServer(server); } }); + + it('should reject when the server aborts mid-stream and maxRedirects is 0', async () => { + const server = await startHTTPServer( + async (req, res) => { + res.setHeader('Content-Encoding', type); + res.setHeader('Transfer-Encoding', 'chunked'); + res.removeHeader('Content-Length'); + res.write(await zipped); + setTimeout(() => res.socket.destroy(), 10); + }, + { port: SERVER_PORT } + ); + + try { + await assert.rejects( + axios.get(`http://localhost:${server.address().port}`, { maxRedirects: 0 }), + (err) => err && err.code === 'ECONNRESET' + ); + } finally { + await stopHTTPServer(server); + } + }); }); } });