From 7afc6c3bd460e1f9af2d5eb1095f615f3abf7539 Mon Sep 17 00:00:00 2001 From: Roberto Bianchi Date: Fri, 10 Apr 2026 10:30:04 +0200 Subject: [PATCH 1/2] chore(test): cover issue 5014 Signed-off-by: Roberto Bianchi --- test/utils/esm-wrapper.mjs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/test/utils/esm-wrapper.mjs b/test/utils/esm-wrapper.mjs index 3611e317660..9a34a39759b 100644 --- a/test/utils/esm-wrapper.mjs +++ b/test/utils/esm-wrapper.mjs @@ -1,6 +1,7 @@ import { createServer } from 'node:http' +import { once } from 'node:events' import { test, after } from 'node:test' -import { +import undici, { Agent, Client, errors, @@ -99,3 +100,31 @@ test('named exports', (t) => { t.assert.strictEqual(typeof setGlobalDispatcher, 'function') t.assert.strictEqual(typeof getGlobalDispatcher, 'function') }) + +test('default import top-level request works with opts.dispatcher', async (t) => { + t.plan(4) + + const server = createServer({ joinDuplicateHeaders: true }, (req, res) => { + t.assert.strictEqual(req.method, 'GET') + t.assert.strictEqual(req.url, '/') + res.end('ok') + }) + + server.listen(0) + await once(server, 'listening') + + const dispatcher = new undici.Agent({ allowH2: true }) + + t.after(async () => { + await dispatcher.close() + server.close() + await once(server, 'close') + }) + + const { statusCode, body } = await undici.request(`http://127.0.0.1:${server.address().port}`, { + dispatcher + }) + + t.assert.strictEqual(statusCode, 200) + t.assert.strictEqual(await body.text(), 'ok') +}) From ad2500b1f52bd07d84265aac30ff86619b2b7b1c Mon Sep 17 00:00:00 2001 From: Roberto Bianchi Date: Fri, 10 Apr 2026 10:42:45 +0200 Subject: [PATCH 2/2] update Signed-off-by: Roberto Bianchi --- test/utils/esm-wrapper.mjs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/utils/esm-wrapper.mjs b/test/utils/esm-wrapper.mjs index 9a34a39759b..9365cdad24e 100644 --- a/test/utils/esm-wrapper.mjs +++ b/test/utils/esm-wrapper.mjs @@ -1,5 +1,4 @@ import { createServer } from 'node:http' -import { once } from 'node:events' import { test, after } from 'node:test' import undici, { Agent, @@ -110,15 +109,13 @@ test('default import top-level request works with opts.dispatcher', async (t) => res.end('ok') }) - server.listen(0) - await once(server, 'listening') + await new Promise((resolve) => server.listen(0, resolve)) const dispatcher = new undici.Agent({ allowH2: true }) t.after(async () => { await dispatcher.close() - server.close() - await once(server, 'close') + await new Promise((resolve) => server.close(resolve)) }) const { statusCode, body } = await undici.request(`http://127.0.0.1:${server.address().port}`, {