From d4a9277a2d54b39eef13368b511fe6f932b2fadc Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Sat, 24 Jan 2026 16:55:55 +0100 Subject: [PATCH 1/2] fix: properly close all connections in test server cleanup Updated 13 test files to call server.closeAllConnections?.() before closing servers in after() hooks. This ensures all connections (both idle and active) are forcefully closed when the method is available (http.Server), preventing test timeouts. Uses optional chaining to safely handle net.Server which lacks this method. Files updated: - test/fetch/encoding.js - test/fetch/client-node-max-header-size.js - test/client-node-max-header-size.js - test/client-request.js - test/env-http-proxy-agent-nodejs-bundle.js - test/issue-4244.js - test/max-response-size.js - test/mock-agent.js - test/mock-client.js - test/mock-pool.js - test/no-strict-content-length.js - test/request.js - test/snapshot-testing.js Co-Authored-By: Claude Opus 4.5 Signed-off-by: Matteo Collina --- test/client-node-max-header-size.js | 5 +- test/client-request.js | 190 ++++++++++++--- test/env-http-proxy-agent-nodejs-bundle.js | 10 +- test/fetch/client-node-max-header-size.js | 5 +- test/fetch/encoding.js | 10 +- test/issue-4244.js | 5 +- test/max-response-size.js | 15 +- test/mock-agent.js | 260 ++++++++++++++++----- test/mock-client.js | 35 ++- test/mock-pool.js | 20 +- test/no-strict-content-length.js | 35 ++- test/request.js | 40 +++- test/snapshot-testing.js | 5 +- 13 files changed, 506 insertions(+), 129 deletions(-) diff --git a/test/client-node-max-header-size.js b/test/client-node-max-header-size.js index 575305eca68..cf61b201a73 100644 --- a/test/client-node-max-header-size.js +++ b/test/client-node-max-header-size.js @@ -21,7 +21,10 @@ describe("Node.js' --max-http-header-size cli option", () => { await once(server, 'listening') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) test("respect Node.js' --max-http-header-size", async (t) => { t = tspl(t, { plan: 6 }) diff --git a/test/client-request.js b/test/client-request.js index 15a3b1a734f..83af028abd0 100644 --- a/test/client-request.js +++ b/test/client-request.js @@ -22,7 +22,10 @@ test('request dump head', async (t) => { res.flushHeaders() res.write('hello'.repeat(100)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -56,7 +59,10 @@ test('request dump big', async (t) => { // Do nothing... } }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -90,7 +96,10 @@ test('request dump', async (t) => { res.setHeader('content-length', 5) res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -120,7 +129,10 @@ test('request dump with abort signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -158,7 +170,10 @@ test('request dump with POJO as invalid signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -193,7 +208,10 @@ test('request dump with aborted signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -231,7 +249,10 @@ test('request hwm', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -259,7 +280,10 @@ test('request abort before headers', async (t) => { res.end('hello') signal.emit('abort') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -296,7 +320,10 @@ test('request body destroyed on invalid callback', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -327,7 +354,10 @@ test('trailers', async (t) => { res.addTrailers({ 'Content-MD5': 'test' }) res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -365,7 +395,10 @@ test('destroy socket abruptly', async (t) => { // therefore we delay it to the next event loop run. setImmediate(socket.destroy.bind(socket)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) const client = new Client(`http://localhost:${server.address().port}`) @@ -407,7 +440,10 @@ test('destroy socket abruptly with keep-alive', async (t) => { // therefore we delay it to the next event loop run. setImmediate(socket.destroy.bind(socket)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) const client = new Client(`http://localhost:${server.address().port}`) @@ -441,7 +477,10 @@ test('request json', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -464,7 +503,10 @@ test('request long multibyte json', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -487,7 +529,10 @@ test('request text', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -577,7 +622,10 @@ describe('headers', () => { serverAddress = `localhost:${server.address().port}` }) - after(() => server.close()) + after(async () => { + server.closeAllConnections() + await new Promise(resolve => server.close(resolve)) + }) test('empty host header', async (t) => { t = tspl(t, { plan: 4 }) @@ -617,7 +665,10 @@ describe('headers', () => { serverAddress = `localhost:${server.address().port}` }) - after(() => server.close()) + after(async () => { + server.closeAllConnections() + await new Promise(resolve => server.close(resolve)) + }) test('invalid host header', async (t) => { t = tspl(t, { plan: 1 }) @@ -669,7 +720,10 @@ test('request long multibyte text', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -693,7 +747,10 @@ test('request blob', async (t) => { res.setHeader('Content-Type', 'application/json') res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -719,7 +776,10 @@ test('request arrayBuffer', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -745,7 +805,10 @@ test('request bytes', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -771,7 +834,10 @@ test('request body', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -803,7 +869,10 @@ test('request post body no missing data', async (t) => { t.strictEqual(ret, 'asd') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -837,7 +906,10 @@ test('request post body no extra data handler', async (t) => { t.strictEqual(ret, 'asd') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -872,7 +944,10 @@ test('request with onInfo callback', async (t) => { res.setHeader('Content-Type', 'application/json') res.end(JSON.stringify({ foo: 'bar' })) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -899,7 +974,10 @@ test('request with onInfo callback but socket is destroyed before end of respons response = res res.writeProcessing() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -943,7 +1021,10 @@ test('request onInfo callback headers parsing', async (t) => { ] socket.end(lines.join('\r\n')) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -979,7 +1060,10 @@ test('request raw responseHeaders', async (t) => { ] socket.end(lines.join('\r\n')) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -1006,7 +1090,10 @@ test('request formData', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1035,7 +1122,10 @@ test('request text2', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1092,7 +1182,10 @@ test('request with FormData body', async (t) => { return res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1122,7 +1215,10 @@ test('request post body Buffer from string', async (t) => { t.strictEqual(ret, 'abcdefghijklmnopqrstuvwxyz') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1153,7 +1249,10 @@ test('request post body Buffer from buffer', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1184,7 +1283,10 @@ test('request post body Uint8Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1215,7 +1317,10 @@ test('request post body Uint32Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1246,7 +1351,10 @@ test('request post body Float64Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1277,7 +1385,10 @@ test('request post body BigUint64Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) @@ -1308,7 +1419,10 @@ test('request post body DataView', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, async () => { const client = new Client(`http://localhost:${server.address().port}`) diff --git a/test/env-http-proxy-agent-nodejs-bundle.js b/test/env-http-proxy-agent-nodejs-bundle.js index 57aad4960f9..0fbdae9e58d 100644 --- a/test/env-http-proxy-agent-nodejs-bundle.js +++ b/test/env-http-proxy-agent-nodejs-bundle.js @@ -30,7 +30,10 @@ describe('EnvHttpProxyAgent and setGlobalDispatcher', () => { server.on('error', err => { console.log('Server error', err) }) server.listen(0) await once(server, 'listening') - t.after(() => { server.close() }) + t.after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) const proxy = http.createServer({ joinDuplicateHeaders: true }) proxy.on('connect', (req, clientSocket, head) => { @@ -60,7 +63,10 @@ describe('EnvHttpProxyAgent and setGlobalDispatcher', () => { proxy.listen(0) await once(proxy, 'listening') - t.after(() => { proxy.close() }) + t.after(async () => { + proxy.closeAllConnections?.() + await new Promise(resolve => proxy.close(resolve)) + }) // Use setGlobalDispatcher and EnvHttpProxyAgent from Node.js // and make sure that they work together. diff --git a/test/fetch/client-node-max-header-size.js b/test/fetch/client-node-max-header-size.js index a6d9a2db029..4fbcc0c183c 100644 --- a/test/fetch/client-node-max-header-size.js +++ b/test/fetch/client-node-max-header-size.js @@ -20,7 +20,10 @@ describe('fetch respects --max-http-header-size', () => { await once(server, 'listening') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) test("respect Node.js' --max-http-header-size", (t, done) => { t.plan(6) diff --git a/test/fetch/encoding.js b/test/fetch/encoding.js index cfaabc4dd6e..df7139a38c5 100644 --- a/test/fetch/encoding.js +++ b/test/fetch/encoding.js @@ -49,8 +49,9 @@ describe('content-encoding handling', () => { await once(server.listen(0), 'listening') }) - after(() => { - server.close() + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) }) test('content-encoding header', async (t) => { @@ -111,8 +112,9 @@ describe('content-encoding chain limit', () => { await once(server.listen(0), 'listening') }) - after(() => { - server.close() + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) }) test(`should allow exactly ${MAX_CONTENT_ENCODINGS} content-encodings`, async (t) => { diff --git a/test/issue-4244.js b/test/issue-4244.js index f8bea892153..86999c7a54b 100644 --- a/test/issue-4244.js +++ b/test/issue-4244.js @@ -12,7 +12,10 @@ describe('Agent should close inactive clients', () => { res.end('ok') }).listen(0) - t.after(() => server.close()) + t.after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) let p const agent = new Agent({ diff --git a/test/max-response-size.js b/test/max-response-size.js index 648a4cb08a0..a0db761d1a7 100644 --- a/test/max-response-size.js +++ b/test/max-response-size.js @@ -10,7 +10,10 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.on('request', (req, res) => { res.end('hello') @@ -40,7 +43,10 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.on('request', (req, res) => { res.end() @@ -70,7 +76,10 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.on('request', (req, res) => { res.end('hello') diff --git a/test/mock-agent.js b/test/mock-agent.js index a0df6413a4e..16fad59898b 100644 --- a/test/mock-agent.js +++ b/test/mock-agent.js @@ -273,7 +273,10 @@ test('MockAgent - [kClients] should match encapsulated agent', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -302,7 +305,10 @@ test('MockAgent - basic intercept with MockAgent.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -345,7 +351,10 @@ test('MockAgent - basic intercept with request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -387,7 +396,10 @@ test('MockAgent - should support local agents', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -432,7 +444,10 @@ test('MockAgent - should support specifying custom agents to mock', async (t) => res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -478,7 +493,10 @@ test('MockAgent - basic Client intercept with request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -522,7 +540,10 @@ test('MockAgent - basic intercept with multiple pools', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -573,7 +594,10 @@ test('MockAgent - should handle multiple responses for an interceptor', async (t res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -636,7 +660,10 @@ test('MockAgent - should call original Pool dispatch if request not found', asyn res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -665,7 +692,10 @@ test('MockAgent - should call original Client dispatch if request not found', as res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -693,7 +723,10 @@ test('MockAgent - should handle string responses', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -756,7 +789,10 @@ test('MockAgent - handle delays to simulate work', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -793,7 +829,10 @@ test('MockAgent - should persist requests', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1053,7 +1092,10 @@ test('MockAgent - handle persists with delayed requests', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1098,7 +1140,10 @@ test('MockAgent - calling close on a mock pool should not affect other mock pool res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1155,7 +1200,10 @@ test('MockAgent - close removes all registered mock clients', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1210,7 +1258,10 @@ test('MockAgent - close removes all registered mock pools', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1243,7 +1294,10 @@ test('MockAgent - should handle replyWithError', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1271,7 +1325,10 @@ test('MockAgent - should support setting a reply to respond a set amount of time res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1321,7 +1378,10 @@ test('MockAgent - persist overrides times', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1376,7 +1436,10 @@ test('MockAgent - matcher should not find mock dispatch if path is of unsupporte t.assert.strictEqual(req.method, 'GET') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1409,7 +1472,10 @@ test('MockAgent - should match path with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1454,7 +1520,10 @@ test('MockAgent - should match path with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1487,7 +1556,10 @@ test('MockAgent - should match method with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1520,7 +1592,10 @@ test('MockAgent - should match method with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1553,7 +1628,10 @@ test('MockAgent - should match body with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1588,7 +1666,10 @@ test('MockAgent - should match body with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1622,7 +1703,10 @@ test('MockAgent - should match headers with string', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1694,7 +1778,10 @@ test('MockAgent - should match headers with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1766,7 +1853,10 @@ test('MockAgent - should match headers with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1839,7 +1929,10 @@ test('MockAgent - should match url with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1872,7 +1965,10 @@ test('MockAgent - should match url with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1905,7 +2001,10 @@ test('MockAgent - handle default reply headers', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1942,7 +2041,10 @@ test('MockAgent - handle default reply trailers', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -1979,7 +2081,10 @@ test('MockAgent - return calculated content-length if specified', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2016,7 +2121,10 @@ test('MockAgent - return calculated content-length for object response if specif res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2054,7 +2162,10 @@ test('MockAgent - should activate and deactivate mock clients', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2115,7 +2226,10 @@ test('MockAgent - enableNetConnect should allow all original dispatches to be ca res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2152,7 +2266,10 @@ test('MockAgent - enableNetConnect with a host string should allow all original res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2189,7 +2306,10 @@ test('MockAgent - enableNetConnect when called with host string multiple times s res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2227,7 +2347,10 @@ test('MockAgent - enableNetConnect with a host regex should allow all original d res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2264,7 +2387,10 @@ test('MockAgent - enableNetConnect with a function should allow all original dis res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2315,7 +2441,10 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for path t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2345,7 +2474,10 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for meth t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2375,7 +2507,10 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for body t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2407,7 +2542,10 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for head t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2445,7 +2583,10 @@ test('MockAgent - disableNetConnect should throw if dispatch not found by net co res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2475,7 +2616,10 @@ test('MockAgent - headers function interceptor', async (t) => { t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2536,7 +2680,10 @@ test('MockAgent - clients are not garbage collected', async (t) => { t.assert.fail('should not be called') res.end('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2794,7 +2941,10 @@ test('MockAgent - Sending ReadableStream body', async (t) => { }) after(() => mockAgent.close()) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2858,7 +3008,10 @@ test('MockAgent - headers should be array of strings (fetch)', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') @@ -2902,7 +3055,10 @@ test('MockAgent - should not accept non-standard search parameters when acceptNo res.setHeader('content-type', 'text/plain') res.end('(non-intercepted) response from server') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await once(server.listen(0), 'listening') diff --git a/test/mock-client.js b/test/mock-client.js index 6cdd3df10f4..aa178db9f8a 100644 --- a/test/mock-client.js +++ b/test/mock-client.js @@ -202,7 +202,10 @@ test('MockClient - should be able to set as globalDispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -237,7 +240,10 @@ test('MockClient - should support query params', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -277,7 +283,10 @@ test('MockClient - should intercept query params with hardcoded path', async (t) res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -316,7 +325,10 @@ test('MockClient - should intercept query params regardless of key ordering', as res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -363,7 +375,10 @@ test('MockClient - should be able to use as a local dispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -398,7 +413,10 @@ test('MockClient - basic intercept with MockClient.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -441,7 +459,10 @@ test('MockClient - cleans mocks', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) diff --git a/test/mock-pool.js b/test/mock-pool.js index ec00a50cbea..48acd21b0ee 100644 --- a/test/mock-pool.js +++ b/test/mock-pool.js @@ -188,7 +188,10 @@ test('MockPool - should be able to set as globalDispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -223,7 +226,10 @@ test('MockPool - should be able to use as a local dispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -258,7 +264,10 @@ test('MockPool - basic intercept with MockPool.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) @@ -363,7 +372,10 @@ test('MockPool - cleans mocks', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await promisify(server.listen.bind(server))(0) diff --git a/test/no-strict-content-length.js b/test/no-strict-content-length.js index 4779bfcd862..6350bd49198 100644 --- a/test/no-strict-content-length.js +++ b/test/no-strict-content-length.js @@ -31,7 +31,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -149,7 +152,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -186,7 +192,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -223,7 +232,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -260,7 +272,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -297,7 +312,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { @@ -333,7 +351,10 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) server.listen(0, () => { const client = new Client(`http://localhost:${server.address().port}`, { diff --git a/test/request.js b/test/request.js index c7adc234bcd..edbe2aa7e59 100644 --- a/test/request.js +++ b/test/request.js @@ -202,7 +202,10 @@ describe('DispatchOptions#maxRedirections', () => { t.ok('request received') res.end('hello world') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve) => server.listen(0, resolve)) const res = await request({ @@ -241,7 +244,10 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -268,7 +274,10 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -295,7 +304,10 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -329,7 +341,10 @@ describe('Should include headers from iterable objects', scope => { const headers = new globalThis.Headers() headers.set('hello', 'world') - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -360,7 +375,10 @@ describe('Should include headers from iterable objects', scope => { const headers = new Map() headers.set('hello', 'world') - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -394,7 +412,10 @@ describe('Should include headers from iterable objects', scope => { } } - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { @@ -424,7 +445,10 @@ describe('Should include headers from iterable objects', scope => { } } - after(() => server.close()) + after(async () => { + server.closeAllConnections?.() + await new Promise(resolve => server.close(resolve)) + }) await new Promise((resolve, reject) => { server.listen(0, (err) => { diff --git a/test/snapshot-testing.js b/test/snapshot-testing.js index 10f8439f51e..f073b2f1e11 100644 --- a/test/snapshot-testing.js +++ b/test/snapshot-testing.js @@ -47,7 +47,10 @@ async function setupServer (server) { function setupCleanup (t, resources) { if (resources.server) { - t.after(() => resources.server.close()) + t.after(async () => { + resources.server.closeAllConnections?.() + await new Promise(resolve => resources.server.close(resolve)) + }) } if (resources.snapshotPath) { t.after(() => unlink(resources.snapshotPath).catch(() => {})) From bd241d9b2a7300fcf18418f712863cda97820d31 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Sat, 24 Jan 2026 19:08:09 +0100 Subject: [PATCH 2/2] fix: use synchronous after hooks for server cleanup Replace async after() hooks with synchronous ones to avoid "Promise resolution is still pending but the event loop has already resolved" errors. The pattern `server.closeAllConnections?.()` followed by `server.close()` properly handles connection cleanup without needing to await. Co-Authored-By: Claude Opus 4.5 Signed-off-by: Matteo Collina --- test/client-node-max-header-size.js | 4 +- test/client-request.js | 152 +++++++-------- test/env-http-proxy-agent-nodejs-bundle.js | 8 +- test/fetch/client-node-max-header-size.js | 4 +- test/fetch/encoding.js | 8 +- test/issue-4244.js | 4 +- test/max-response-size.js | 12 +- test/mock-agent.js | 208 ++++++++++----------- test/mock-client.js | 28 +-- test/mock-pool.js | 16 +- test/no-strict-content-length.js | 28 +-- test/request.js | 32 ++-- test/snapshot-testing.js | 4 +- 13 files changed, 254 insertions(+), 254 deletions(-) diff --git a/test/client-node-max-header-size.js b/test/client-node-max-header-size.js index cf61b201a73..9d5ab0ed90d 100644 --- a/test/client-node-max-header-size.js +++ b/test/client-node-max-header-size.js @@ -21,9 +21,9 @@ describe("Node.js' --max-http-header-size cli option", () => { await once(server, 'listening') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) test("respect Node.js' --max-http-header-size", async (t) => { diff --git a/test/client-request.js b/test/client-request.js index 83af028abd0..d367435eeff 100644 --- a/test/client-request.js +++ b/test/client-request.js @@ -22,9 +22,9 @@ test('request dump head', async (t) => { res.flushHeaders() res.write('hello'.repeat(100)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -59,9 +59,9 @@ test('request dump big', async (t) => { // Do nothing... } }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -96,9 +96,9 @@ test('request dump', async (t) => { res.setHeader('content-length', 5) res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -129,9 +129,9 @@ test('request dump with abort signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -170,9 +170,9 @@ test('request dump with POJO as invalid signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -208,9 +208,9 @@ test('request dump with aborted signal', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -249,9 +249,9 @@ test('request hwm', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.write('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -280,9 +280,9 @@ test('request abort before headers', async (t) => { res.end('hello') signal.emit('abort') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -320,9 +320,9 @@ test('request body destroyed on invalid callback', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -354,9 +354,9 @@ test('trailers', async (t) => { res.addTrailers({ 'Content-MD5': 'test' }) res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -395,9 +395,9 @@ test('destroy socket abruptly', async (t) => { // therefore we delay it to the next event loop run. setImmediate(socket.destroy.bind(socket)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -440,9 +440,9 @@ test('destroy socket abruptly with keep-alive', async (t) => { // therefore we delay it to the next event loop run. setImmediate(socket.destroy.bind(socket)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -477,9 +477,9 @@ test('request json', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -503,9 +503,9 @@ test('request long multibyte json', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -529,9 +529,9 @@ test('request text', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -622,9 +622,9 @@ describe('headers', () => { serverAddress = `localhost:${server.address().port}` }) - after(async () => { + after(() => { server.closeAllConnections() - await new Promise(resolve => server.close(resolve)) + server.close() }) test('empty host header', async (t) => { @@ -665,9 +665,9 @@ describe('headers', () => { serverAddress = `localhost:${server.address().port}` }) - after(async () => { + after(() => { server.closeAllConnections() - await new Promise(resolve => server.close(resolve)) + server.close() }) test('invalid host header', async (t) => { @@ -720,9 +720,9 @@ test('request long multibyte text', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -747,9 +747,9 @@ test('request blob', async (t) => { res.setHeader('Content-Type', 'application/json') res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -776,9 +776,9 @@ test('request arrayBuffer', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -805,9 +805,9 @@ test('request bytes', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -834,9 +834,9 @@ test('request body', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -869,9 +869,9 @@ test('request post body no missing data', async (t) => { t.strictEqual(ret, 'asd') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -906,9 +906,9 @@ test('request post body no extra data handler', async (t) => { t.strictEqual(ret, 'asd') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -944,9 +944,9 @@ test('request with onInfo callback', async (t) => { res.setHeader('Content-Type', 'application/json') res.end(JSON.stringify({ foo: 'bar' })) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -974,9 +974,9 @@ test('request with onInfo callback but socket is destroyed before end of respons response = res res.writeProcessing() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1021,9 +1021,9 @@ test('request onInfo callback headers parsing', async (t) => { ] socket.end(lines.join('\r\n')) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -1060,9 +1060,9 @@ test('request raw responseHeaders', async (t) => { ] socket.end(lines.join('\r\n')) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -1090,9 +1090,9 @@ test('request formData', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1122,9 +1122,9 @@ test('request text2', async (t) => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end(JSON.stringify(obj)) }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1182,9 +1182,9 @@ test('request with FormData body', async (t) => { return res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1215,9 +1215,9 @@ test('request post body Buffer from string', async (t) => { t.strictEqual(ret, 'abcdefghijklmnopqrstuvwxyz') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1249,9 +1249,9 @@ test('request post body Buffer from buffer', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1283,9 +1283,9 @@ test('request post body Uint8Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1317,9 +1317,9 @@ test('request post body Uint32Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1351,9 +1351,9 @@ test('request post body Float64Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1385,9 +1385,9 @@ test('request post body BigUint64Array', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { @@ -1419,9 +1419,9 @@ test('request post body DataView', async (t) => { t.strictEqual(ret, 'ijklmnopqrstuvwx') res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, async () => { diff --git a/test/env-http-proxy-agent-nodejs-bundle.js b/test/env-http-proxy-agent-nodejs-bundle.js index 0fbdae9e58d..47c2649ff42 100644 --- a/test/env-http-proxy-agent-nodejs-bundle.js +++ b/test/env-http-proxy-agent-nodejs-bundle.js @@ -30,9 +30,9 @@ describe('EnvHttpProxyAgent and setGlobalDispatcher', () => { server.on('error', err => { console.log('Server error', err) }) server.listen(0) await once(server, 'listening') - t.after(async () => { + t.after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) const proxy = http.createServer({ joinDuplicateHeaders: true }) @@ -63,9 +63,9 @@ describe('EnvHttpProxyAgent and setGlobalDispatcher', () => { proxy.listen(0) await once(proxy, 'listening') - t.after(async () => { + t.after(() => { proxy.closeAllConnections?.() - await new Promise(resolve => proxy.close(resolve)) + proxy.close() }) // Use setGlobalDispatcher and EnvHttpProxyAgent from Node.js diff --git a/test/fetch/client-node-max-header-size.js b/test/fetch/client-node-max-header-size.js index 4fbcc0c183c..744729b6371 100644 --- a/test/fetch/client-node-max-header-size.js +++ b/test/fetch/client-node-max-header-size.js @@ -20,9 +20,9 @@ describe('fetch respects --max-http-header-size', () => { await once(server, 'listening') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) test("respect Node.js' --max-http-header-size", (t, done) => { diff --git a/test/fetch/encoding.js b/test/fetch/encoding.js index df7139a38c5..ec07a4bdbd8 100644 --- a/test/fetch/encoding.js +++ b/test/fetch/encoding.js @@ -49,9 +49,9 @@ describe('content-encoding handling', () => { await once(server.listen(0), 'listening') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) test('content-encoding header', async (t) => { @@ -112,9 +112,9 @@ describe('content-encoding chain limit', () => { await once(server.listen(0), 'listening') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) test(`should allow exactly ${MAX_CONTENT_ENCODINGS} content-encodings`, async (t) => { diff --git a/test/issue-4244.js b/test/issue-4244.js index 86999c7a54b..489557fe495 100644 --- a/test/issue-4244.js +++ b/test/issue-4244.js @@ -12,9 +12,9 @@ describe('Agent should close inactive clients', () => { res.end('ok') }).listen(0) - t.after(async () => { + t.after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) let p diff --git a/test/max-response-size.js b/test/max-response-size.js index a0db761d1a7..c1b39c98204 100644 --- a/test/max-response-size.js +++ b/test/max-response-size.js @@ -10,9 +10,9 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.on('request', (req, res) => { @@ -43,9 +43,9 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.on('request', (req, res) => { @@ -76,9 +76,9 @@ describe('max response size', async (t) => { t = tspl(t, { plan: 3 }) const server = createServer({ joinDuplicateHeaders: true }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.on('request', (req, res) => { diff --git a/test/mock-agent.js b/test/mock-agent.js index 16fad59898b..bb3d2afb9f7 100644 --- a/test/mock-agent.js +++ b/test/mock-agent.js @@ -273,9 +273,9 @@ test('MockAgent - [kClients] should match encapsulated agent', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -305,9 +305,9 @@ test('MockAgent - basic intercept with MockAgent.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -351,9 +351,9 @@ test('MockAgent - basic intercept with request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -396,9 +396,9 @@ test('MockAgent - should support local agents', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -444,9 +444,9 @@ test('MockAgent - should support specifying custom agents to mock', async (t) => res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -493,9 +493,9 @@ test('MockAgent - basic Client intercept with request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -540,9 +540,9 @@ test('MockAgent - basic intercept with multiple pools', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -594,9 +594,9 @@ test('MockAgent - should handle multiple responses for an interceptor', async (t res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -660,9 +660,9 @@ test('MockAgent - should call original Pool dispatch if request not found', asyn res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -692,9 +692,9 @@ test('MockAgent - should call original Client dispatch if request not found', as res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -723,9 +723,9 @@ test('MockAgent - should handle string responses', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -789,9 +789,9 @@ test('MockAgent - handle delays to simulate work', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -829,9 +829,9 @@ test('MockAgent - should persist requests', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1092,9 +1092,9 @@ test('MockAgent - handle persists with delayed requests', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1140,9 +1140,9 @@ test('MockAgent - calling close on a mock pool should not affect other mock pool res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1200,9 +1200,9 @@ test('MockAgent - close removes all registered mock clients', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1258,9 +1258,9 @@ test('MockAgent - close removes all registered mock pools', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1294,9 +1294,9 @@ test('MockAgent - should handle replyWithError', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1325,9 +1325,9 @@ test('MockAgent - should support setting a reply to respond a set amount of time res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1378,9 +1378,9 @@ test('MockAgent - persist overrides times', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1436,9 +1436,9 @@ test('MockAgent - matcher should not find mock dispatch if path is of unsupporte t.assert.strictEqual(req.method, 'GET') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1472,9 +1472,9 @@ test('MockAgent - should match path with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1520,9 +1520,9 @@ test('MockAgent - should match path with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1556,9 +1556,9 @@ test('MockAgent - should match method with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1592,9 +1592,9 @@ test('MockAgent - should match method with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1628,9 +1628,9 @@ test('MockAgent - should match body with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1666,9 +1666,9 @@ test('MockAgent - should match body with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1703,9 +1703,9 @@ test('MockAgent - should match headers with string', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1778,9 +1778,9 @@ test('MockAgent - should match headers with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1853,9 +1853,9 @@ test('MockAgent - should match headers with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1929,9 +1929,9 @@ test('MockAgent - should match url with regex', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -1965,9 +1965,9 @@ test('MockAgent - should match url with function', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2001,9 +2001,9 @@ test('MockAgent - handle default reply headers', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2041,9 +2041,9 @@ test('MockAgent - handle default reply trailers', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2081,9 +2081,9 @@ test('MockAgent - return calculated content-length if specified', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2121,9 +2121,9 @@ test('MockAgent - return calculated content-length for object response if specif res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2162,9 +2162,9 @@ test('MockAgent - should activate and deactivate mock clients', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2226,9 +2226,9 @@ test('MockAgent - enableNetConnect should allow all original dispatches to be ca res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2266,9 +2266,9 @@ test('MockAgent - enableNetConnect with a host string should allow all original res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2306,9 +2306,9 @@ test('MockAgent - enableNetConnect when called with host string multiple times s res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2347,9 +2347,9 @@ test('MockAgent - enableNetConnect with a host regex should allow all original d res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2387,9 +2387,9 @@ test('MockAgent - enableNetConnect with a function should allow all original dis res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2441,9 +2441,9 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for path t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2474,9 +2474,9 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for meth t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2507,9 +2507,9 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for body t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2542,9 +2542,9 @@ test('MockAgent - enableNetConnect should throw if dispatch not matched for head t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2583,9 +2583,9 @@ test('MockAgent - disableNetConnect should throw if dispatch not found by net co res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2616,9 +2616,9 @@ test('MockAgent - headers function interceptor', async (t) => { t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2680,9 +2680,9 @@ test('MockAgent - clients are not garbage collected', async (t) => { t.assert.fail('should not be called') res.end('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -2941,9 +2941,9 @@ test('MockAgent - Sending ReadableStream body', async (t) => { }) after(() => mockAgent.close()) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -3008,9 +3008,9 @@ test('MockAgent - headers should be array of strings (fetch)', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') @@ -3055,9 +3055,9 @@ test('MockAgent - should not accept non-standard search parameters when acceptNo res.setHeader('content-type', 'text/plain') res.end('(non-intercepted) response from server') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await once(server.listen(0), 'listening') diff --git a/test/mock-client.js b/test/mock-client.js index aa178db9f8a..e89bc516e52 100644 --- a/test/mock-client.js +++ b/test/mock-client.js @@ -202,9 +202,9 @@ test('MockClient - should be able to set as globalDispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -240,9 +240,9 @@ test('MockClient - should support query params', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -283,9 +283,9 @@ test('MockClient - should intercept query params with hardcoded path', async (t) res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -325,9 +325,9 @@ test('MockClient - should intercept query params regardless of key ordering', as res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -375,9 +375,9 @@ test('MockClient - should be able to use as a local dispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -413,9 +413,9 @@ test('MockClient - basic intercept with MockClient.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -459,9 +459,9 @@ test('MockClient - cleans mocks', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) diff --git a/test/mock-pool.js b/test/mock-pool.js index 48acd21b0ee..ca4805dc434 100644 --- a/test/mock-pool.js +++ b/test/mock-pool.js @@ -188,9 +188,9 @@ test('MockPool - should be able to set as globalDispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -226,9 +226,9 @@ test('MockPool - should be able to use as a local dispatcher', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -264,9 +264,9 @@ test('MockPool - basic intercept with MockPool.request', async (t) => { res.end('should not be called') t.assert.fail('should not be called') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) @@ -372,9 +372,9 @@ test('MockPool - cleans mocks', async (t) => { res.setHeader('content-type', 'text/plain') res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await promisify(server.listen.bind(server))(0) diff --git a/test/no-strict-content-length.js b/test/no-strict-content-length.js index 6350bd49198..3b16d2eeb72 100644 --- a/test/no-strict-content-length.js +++ b/test/no-strict-content-length.js @@ -31,9 +31,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -152,9 +152,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -192,9 +192,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -232,9 +232,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -272,9 +272,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -312,9 +312,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { @@ -351,9 +351,9 @@ describe('strictContentLength: false', () => { const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { res.end() }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) server.listen(0, () => { diff --git a/test/request.js b/test/request.js index edbe2aa7e59..6166a95e079 100644 --- a/test/request.js +++ b/test/request.js @@ -202,9 +202,9 @@ describe('DispatchOptions#maxRedirections', () => { t.ok('request received') res.end('hello world') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve) => server.listen(0, resolve)) @@ -244,9 +244,9 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -274,9 +274,9 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -304,9 +304,9 @@ describe('DispatchOptions#reset', () => { res.end('hello') }) - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -341,9 +341,9 @@ describe('Should include headers from iterable objects', scope => { const headers = new globalThis.Headers() headers.set('hello', 'world') - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -375,9 +375,9 @@ describe('Should include headers from iterable objects', scope => { const headers = new Map() headers.set('hello', 'world') - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -412,9 +412,9 @@ describe('Should include headers from iterable objects', scope => { } } - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { @@ -445,9 +445,9 @@ describe('Should include headers from iterable objects', scope => { } } - after(async () => { + after(() => { server.closeAllConnections?.() - await new Promise(resolve => server.close(resolve)) + server.close() }) await new Promise((resolve, reject) => { diff --git a/test/snapshot-testing.js b/test/snapshot-testing.js index f073b2f1e11..8bb6c815c01 100644 --- a/test/snapshot-testing.js +++ b/test/snapshot-testing.js @@ -47,9 +47,9 @@ async function setupServer (server) { function setupCleanup (t, resources) { if (resources.server) { - t.after(async () => { + t.after(() => { resources.server.closeAllConnections?.() - await new Promise(resolve => resources.server.close(resolve)) + resources.server.close() }) } if (resources.snapshotPath) {