From d64c213a9b4cccd388f5092a3d3bfd769b7235bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 05:46:56 +0000 Subject: [PATCH 01/10] Initial plan From c1f9a32e4d5022aff7f5a8d2db46c92f60bbe61e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 05:51:26 +0000 Subject: [PATCH 02/10] feat: align urllib defaults with undici v8 Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/d604ed5f-b744-491e-9cdf-921604c3d785 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- package.json | 4 ++-- pnpm-lock.yaml | 12 ++++++------ src/BaseAgent.ts | 5 ++++- src/HttpAgent.ts | 2 +- src/HttpClient.ts | 10 +++++----- src/Request.ts | 2 +- src/fetch.ts | 1 + test/HttpClient.test.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 61 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 55b7f279..74d1fc16 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "mime-types": "^2.1.35", "qs": "^6.15.0", "type-fest": "^4.41.0", - "undici": "^7.24.0", + "undici": "^8.2.0", "ylru": "^2.0.0" }, "devDependencies": { @@ -109,7 +109,7 @@ } }, "engines": { - "node": ">= 22.0.0" + "node": ">= 22.19.0" }, "packageManager": "pnpm@11.0.8", "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 503b9ac2..cd762a92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: ^4.41.0 version: 4.41.0 undici: - specifier: ^7.24.0 - version: 7.25.0 + specifier: ^8.2.0 + version: 8.2.0 ylru: specifier: ^2.0.0 version: 2.0.0 @@ -1558,9 +1558,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.25.0: - resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} - engines: {node: '>=20.18.1'} + undici@8.2.0: + resolution: {integrity: sha512-Z+4Hx9GE26Lh9Upwfnc8C7SsrpBPGaM/Gm6kMFtiG7c+5IvQKlXi/t+9x9DrrCh29cww5TSP9YdVaBcnLDs5fQ==} + engines: {node: '>=22.19.0'} unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -2862,7 +2862,7 @@ snapshots: undici-types@6.21.0: {} - undici@7.25.0: {} + undici@8.2.0: {} unicode-emoji-modifier-base@1.0.0: {} diff --git a/src/BaseAgent.ts b/src/BaseAgent.ts index 826207e2..f5907284 100644 --- a/src/BaseAgent.ts +++ b/src/BaseAgent.ts @@ -12,7 +12,10 @@ export class BaseAgent extends Agent { #opaqueLocalStorage?: AsyncLocalStorage; constructor(options: BaseAgentOptions) { - super(options); + super({ + ...options, + allowH2: options.allowH2 ?? false, + }); this.#opaqueLocalStorage = options.opaqueLocalStorage; } diff --git a/src/HttpAgent.ts b/src/HttpAgent.ts index 9be55aaa..73ad9203 100644 --- a/src/HttpAgent.ts +++ b/src/HttpAgent.ts @@ -66,7 +66,7 @@ export class HttpAgent extends BaseAgent { }; super({ ...baseOpts, - connect: { ...options.connect, lookup: lookupFunction, allowH2: options.allowH2 }, + connect: { ...options.connect, lookup: lookupFunction, allowH2: options.allowH2 ?? false }, }); this.#checkAddress = options.checkAddress; } diff --git a/src/HttpClient.ts b/src/HttpClient.ts index df901b11..e23e2adb 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -187,22 +187,22 @@ export class HttpClient extends EventEmitter { constructor(clientOptions?: ClientOptions) { super(); this.#defaultArgs = clientOptions?.defaultArgs; + const allowH2 = clientOptions?.allowH2 ?? false; if (clientOptions?.lookup || clientOptions?.checkAddress) { this.#dispatcher = new HttpAgent({ lookup: clientOptions.lookup, checkAddress: clientOptions.checkAddress, connect: clientOptions.connect, - allowH2: clientOptions.allowH2, + allowH2, }); } else if (clientOptions?.connect) { this.#dispatcher = new Agent({ connect: clientOptions.connect, - allowH2: clientOptions.allowH2, + allowH2, }); - } else if (clientOptions?.allowH2) { - // Support HTTP2 + } else { this.#dispatcher = new Agent({ - allowH2: clientOptions.allowH2, + allowH2, }); } initDiagnosticsChannel(); diff --git a/src/Request.ts b/src/Request.ts index 330dd330..b916d96e 100644 --- a/src/Request.ts +++ b/src/Request.ts @@ -14,7 +14,7 @@ export type RequestURL = string | URL; export type FixJSONCtlCharsHandler = (data: string) => string; export type FixJSONCtlChars = boolean | FixJSONCtlCharsHandler; -type AbortSignal = unknown; +type AbortSignal = globalThis.AbortSignal; export type RequestOptions = { /** Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'. */ diff --git a/src/fetch.ts b/src/fetch.ts index e9f0acb5..4af40325 100644 --- a/src/fetch.ts +++ b/src/fetch.ts @@ -58,6 +58,7 @@ export class FetchFactory { setClientOptions(clientOptions: ClientOptions): void { let dispatcherOption: BaseAgentOptions = { + allowH2: clientOptions.allowH2 ?? false, opaqueLocalStorage: this.#opaqueLocalStorage, }; let dispatcherClazz: new (options: BaseAgentOptions) => BaseAgent = BaseAgent; diff --git a/test/HttpClient.test.ts b/test/HttpClient.test.ts index f33bf4bb..627523d0 100644 --- a/test/HttpClient.test.ts +++ b/test/HttpClient.test.ts @@ -125,6 +125,47 @@ describe('HttpClient.test.ts', () => { assert(httpClient.getDispatcherPoolStats()[_url.substring(0, _url.length - 1)].connected > 1); }); + it('should keep HTTP/1.1 by default', async () => { + const server = createSecureServer({ + allowHTTP1: true, + key: pems.private, + cert: pems.cert, + }); + + let lastHttpVersion = ''; + server.on('request', (req, res) => { + lastHttpVersion = req.httpVersion; + res.writeHead(200, { + 'content-type': 'text/plain; charset=utf-8', + }); + res.end(`hello http/${req.httpVersion}!`); + }); + + server.listen(0); + await once(server, 'listening'); + + const httpClient = new HttpClient({ + connect: { + rejectUnauthorized: false, + }, + }); + + const url = `https://localhost:${(server.address() as AddressInfo).port}`; + const response = await httpClient.request(url, { + dataType: 'text', + }); + assert.equal(response.status, 200); + assert.equal(response.data, 'hello http/1.1!'); + assert.equal(lastHttpVersion, '1.1'); + + await new Promise((resolve, reject) => { + server.close((err) => { + if (err) reject(err); + else resolve(); + }); + }); + }); + it('should not exit after other side closed error', async () => { const server = createSecureServer({ key: pems.private, From a0a9eade78168d0d71079d8a373175a88e0cd85a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 05:51:59 +0000 Subject: [PATCH 03/10] test: cover undici v8 default protocol behavior Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/d604ed5f-b744-491e-9cdf-921604c3d785 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- test/HttpClient.test.ts | 26 ++++++++++++---------- test/fetch.test.ts | 49 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/test/HttpClient.test.ts b/test/HttpClient.test.ts index 627523d0..dce88794 100644 --- a/test/HttpClient.test.ts +++ b/test/HttpClient.test.ts @@ -151,19 +151,21 @@ describe('HttpClient.test.ts', () => { }); const url = `https://localhost:${(server.address() as AddressInfo).port}`; - const response = await httpClient.request(url, { - dataType: 'text', - }); - assert.equal(response.status, 200); - assert.equal(response.data, 'hello http/1.1!'); - assert.equal(lastHttpVersion, '1.1'); - - await new Promise((resolve, reject) => { - server.close((err) => { - if (err) reject(err); - else resolve(); + try { + const response = await httpClient.request(url, { + dataType: 'text', }); - }); + assert.equal(response.status, 200); + assert.equal(response.data, 'hello http/1.1!'); + assert.equal(lastHttpVersion, '1.1'); + } finally { + await new Promise((resolve, reject) => { + server.close((err) => { + if (err) reject(err); + else resolve(); + }); + }); + } }); it('should not exit after other side closed error', async () => { diff --git a/test/fetch.test.ts b/test/fetch.test.ts index e39a1207..f7fcaa51 100644 --- a/test/fetch.test.ts +++ b/test/fetch.test.ts @@ -1,7 +1,11 @@ import assert from 'node:assert/strict'; import diagnosticsChannel from 'node:diagnostics_channel'; +import { once } from 'node:events'; +import { createSecureServer } from 'node:http2'; +import type { AddressInfo } from 'node:net'; import { setTimeout as sleep } from 'node:timers/promises'; +import selfsigned from 'selfsigned'; import { Request } from 'undici'; import { describe, it, beforeAll, afterAll } from 'vite-plus/test'; @@ -113,6 +117,51 @@ describe('fetch.test.ts', () => { assert(Object.keys(stats).length > 0, `dispatcher pool stats: ${JSON.stringify(stats)}`); }); + it('fetch should keep HTTP/1.1 by default', async () => { + const pem = selfsigned.generate([], { + keySize: 2048, + }); + const server = createSecureServer({ + allowHTTP1: true, + key: pem.private, + cert: pem.cert, + }); + + let lastHttpVersion = ''; + server.on('request', (req, res) => { + lastHttpVersion = req.httpVersion; + res.writeHead(200, { + 'content-type': 'text/plain; charset=utf-8', + }); + res.end(`hello http/${req.httpVersion}!`); + }); + + server.listen(0); + await once(server, 'listening'); + + const factory = new FetchFactory(); + factory.setClientOptions({ + connect: { + rejectUnauthorized: false, + }, + }); + + const url = `https://localhost:${(server.address() as AddressInfo).port}`; + try { + const response = await factory.fetch(url); + assert.equal(response.status, 200); + assert.equal(await response.text(), 'hello http/1.1!'); + assert.equal(lastHttpVersion, '1.1'); + } finally { + await new Promise((resolve, reject) => { + server.close((err) => { + if (err) reject(err); + else resolve(); + }); + }); + } + }); + it('fetch request with post should work', async () => { await assert.doesNotReject(async () => { const request = new Request(_url, { From 9ff06ec19ed8b9c0cbe9b585f69fb48d032812c4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 06:52:55 +0000 Subject: [PATCH 04/10] test: stabilize proxy dispatcher coverage on undici 8 Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/41f069d4-7ee2-4119-8a94-d2b2cb0e76eb Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- test/options.dispatcher.test.ts | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/test/options.dispatcher.test.ts b/test/options.dispatcher.test.ts index e737afc0..d60ca85f 100644 --- a/test/options.dispatcher.test.ts +++ b/test/options.dispatcher.test.ts @@ -11,6 +11,7 @@ describe('options.dispatcher.test.ts', () => { let _url: string; let proxyServer: any; let proxyServerUrl: string; + const proxyAgents: ProxyAgent[] = []; beforeAll(async () => { const { closeServer, url } = await startServer(); close = closeServer; @@ -27,13 +28,21 @@ describe('options.dispatcher.test.ts', () => { afterAll(async () => { await close(); + await Promise.all(proxyAgents.map(async (proxyAgent) => await proxyAgent.close())); await new Promise((resolve) => { proxyServer.close(resolve); }); }); it('should work with proxyAgent dispatcher', async () => { - const proxyAgent = new ProxyAgent(proxyServerUrl); + const { closeServer, url } = await startServer({ https: true }); + const proxyAgent = new ProxyAgent({ + uri: proxyServerUrl, + requestTls: { + rejectUnauthorized: false, + }, + }); + proxyAgents.push(proxyAgent); const response = await request(`${_url}html`, { dispatcher: proxyAgent, dataType: 'text', @@ -42,19 +51,24 @@ describe('options.dispatcher.test.ts', () => { assert.equal(response.status, 200); assert.equal(response.data, '

hello

'); - const response2 = await request('https://registry.npmmirror.com/urllib/latest', { - dispatcher: proxyAgent, - dataType: 'json', - timing: true, - }); - // console.log(response2.status, response2.headers); - assert.equal(response2.status, 200); - assert.equal(response2.data.name, 'urllib'); + try { + const response2 = await request(url, { + dispatcher: proxyAgent, + dataType: 'json', + timing: true, + }); + assert.equal(response2.status, 200); + assert.equal(response2.data.method, 'GET'); + assert.equal(response2.data.headers.host, new URL(url).host); + } finally { + await closeServer(); + } }); it('should work with getGlobalDispatcher() dispatcher', async () => { const agent = getGlobalDispatcher(); const proxyAgent = new ProxyAgent(proxyServerUrl); + proxyAgents.push(proxyAgent); setGlobalDispatcher(proxyAgent); const response = await request(`${_url}html`, { dataType: 'text', From 8a743c01c522f733e9d90f24d5d724e771376138 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 06:54:27 +0000 Subject: [PATCH 05/10] test: fix proxy agent CI teardown Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/41f069d4-7ee2-4119-8a94-d2b2cb0e76eb Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- test/options.dispatcher.test.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/test/options.dispatcher.test.ts b/test/options.dispatcher.test.ts index d60ca85f..4dfdafb8 100644 --- a/test/options.dispatcher.test.ts +++ b/test/options.dispatcher.test.ts @@ -28,7 +28,7 @@ describe('options.dispatcher.test.ts', () => { afterAll(async () => { await close(); - await Promise.all(proxyAgents.map(async (proxyAgent) => await proxyAgent.close())); + await Promise.all(proxyAgents.map((proxyAgent) => proxyAgent.close())); await new Promise((resolve) => { proxyServer.close(resolve); }); @@ -36,22 +36,22 @@ describe('options.dispatcher.test.ts', () => { it('should work with proxyAgent dispatcher', async () => { const { closeServer, url } = await startServer({ https: true }); - const proxyAgent = new ProxyAgent({ - uri: proxyServerUrl, - requestTls: { - rejectUnauthorized: false, - }, - }); - proxyAgents.push(proxyAgent); - const response = await request(`${_url}html`, { - dispatcher: proxyAgent, - dataType: 'text', - timing: true, - }); - assert.equal(response.status, 200); - assert.equal(response.data, '

hello

'); - try { + const proxyAgent = new ProxyAgent({ + uri: proxyServerUrl, + requestTls: { + rejectUnauthorized: false, + }, + }); + proxyAgents.push(proxyAgent); + const response = await request(`${_url}html`, { + dispatcher: proxyAgent, + dataType: 'text', + timing: true, + }); + assert.equal(response.status, 200); + assert.equal(response.data, '

hello

'); + const response2 = await request(url, { dispatcher: proxyAgent, dataType: 'json', From aaa230ee40dc80e989e5c40b2679f40cc390b4cc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 06:55:32 +0000 Subject: [PATCH 06/10] test: clarify proxy fixture naming Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/41f069d4-7ee2-4119-8a94-d2b2cb0e76eb Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- test/options.dispatcher.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/options.dispatcher.test.ts b/test/options.dispatcher.test.ts index 4dfdafb8..7751fccd 100644 --- a/test/options.dispatcher.test.ts +++ b/test/options.dispatcher.test.ts @@ -35,7 +35,7 @@ describe('options.dispatcher.test.ts', () => { }); it('should work with proxyAgent dispatcher', async () => { - const { closeServer, url } = await startServer({ https: true }); + const { closeServer: closeHttpsServer, url: httpsUrl } = await startServer({ https: true }); try { const proxyAgent = new ProxyAgent({ uri: proxyServerUrl, @@ -52,16 +52,16 @@ describe('options.dispatcher.test.ts', () => { assert.equal(response.status, 200); assert.equal(response.data, '

hello

'); - const response2 = await request(url, { + const response2 = await request(httpsUrl, { dispatcher: proxyAgent, dataType: 'json', timing: true, }); assert.equal(response2.status, 200); assert.equal(response2.data.method, 'GET'); - assert.equal(response2.data.headers.host, new URL(url).host); + assert.equal(response2.data.headers.host, new URL(httpsUrl).host); } finally { - await closeServer(); + await closeHttpsServer(); } }); From e58ee24fd4a069207f619467b0265f1d70cb9e15 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 05:41:07 +0000 Subject: [PATCH 07/10] fix: honor MockAgent with default dispatcher Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/0517ea28-68b8-4db7-9778-9a1f31a60007 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- src/HttpClient.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/HttpClient.ts b/src/HttpClient.ts index e23e2adb..d2669011 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -41,6 +41,22 @@ type PropertyShouldBe = Omit & { [P in K]: V }; type IUndiciRequestOption = PropertyShouldBe; export const PROTO_RE: RegExp = /^https?:\/\//i; +const undiciGlobalDispatcher = getGlobalDispatcher(); +let defaultDispatcher: Dispatcher; + +function getDefaultDispatcher(): Dispatcher { + const globalDispatcher = getGlobalDispatcher(); + if (globalDispatcher !== undiciGlobalDispatcher) { + return globalDispatcher; + } + + if (!defaultDispatcher) { + defaultDispatcher = new Agent({ + allowH2: false, + }); + } + return defaultDispatcher; +} export interface UndiciTimingInfo { startTime: number; @@ -200,7 +216,7 @@ export class HttpClient extends EventEmitter { connect: clientOptions.connect, allowH2, }); - } else { + } else if (clientOptions?.allowH2 !== undefined) { this.#dispatcher = new Agent({ allowH2, }); @@ -209,7 +225,7 @@ export class HttpClient extends EventEmitter { } getDispatcher(): Dispatcher { - return this.#dispatcher ?? getGlobalDispatcher(); + return this.#dispatcher ?? getDefaultDispatcher(); } setDispatcher(dispatcher: Dispatcher): void { From 8ef5a50fcfb98a4e4e8982f3ff21a56247ead291 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 05:42:20 +0000 Subject: [PATCH 08/10] refactor: clarify default dispatcher fallback Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/0517ea28-68b8-4db7-9778-9a1f31a60007 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- src/HttpClient.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/HttpClient.ts b/src/HttpClient.ts index d2669011..4ed6db44 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -41,12 +41,16 @@ type PropertyShouldBe = Omit & { [P in K]: V }; type IUndiciRequestOption = PropertyShouldBe; export const PROTO_RE: RegExp = /^https?:\/\//i; -const undiciGlobalDispatcher = getGlobalDispatcher(); +let initialGlobalDispatcher: Dispatcher | undefined; let defaultDispatcher: Dispatcher; function getDefaultDispatcher(): Dispatcher { const globalDispatcher = getGlobalDispatcher(); - if (globalDispatcher !== undiciGlobalDispatcher) { + if (!initialGlobalDispatcher) { + initialGlobalDispatcher = globalDispatcher; + } + + if (globalDispatcher !== initialGlobalDispatcher) { return globalDispatcher; } @@ -217,6 +221,8 @@ export class HttpClient extends EventEmitter { allowH2, }); } else if (clientOptions?.allowH2 !== undefined) { + // Explicit protocol preference should use a dedicated dispatcher instead of + // following later global dispatcher overrides. this.#dispatcher = new Agent({ allowH2, }); From b222cdcfadeafd08bc6a9e1539c5c18d177609ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 9 May 2026 05:43:40 +0000 Subject: [PATCH 09/10] docs: clarify dispatcher fallback behavior Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/0517ea28-68b8-4db7-9778-9a1f31a60007 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- src/HttpClient.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/HttpClient.ts b/src/HttpClient.ts index 4ed6db44..d77d6651 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -42,8 +42,12 @@ type IUndiciRequestOption = PropertyShouldBe Date: Sat, 9 May 2026 05:44:45 +0000 Subject: [PATCH 10/10] refactor: rename default http1 dispatcher Agent-Logs-Url: https://github.com/node-modules/urllib/sessions/0517ea28-68b8-4db7-9778-9a1f31a60007 Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com> --- src/HttpClient.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/HttpClient.ts b/src/HttpClient.ts index d77d6651..a846bfa8 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -42,7 +42,7 @@ type IUndiciRequestOption = PropertyShouldBe