diff --git a/test/issue-3410.js b/test/issue-3410.js new file mode 100644 index 00000000000..ea270244c38 --- /dev/null +++ b/test/issue-3410.js @@ -0,0 +1,16 @@ +'use strict' + +const { test } = require('node:test') +const { eventLoopBlocker } = require('./utils/event-loop-blocker') +const { Agent, fetch, setGlobalDispatcher } = require('..') + +test('https://github.com/nodejs/undici/issues/3356', async (t) => { + const connectTimeout = 2000 + setGlobalDispatcher(new Agent({ connectTimeout })) + + const fetchPromise = fetch('http://www.example.org/') + + eventLoopBlocker(3000) + + await fetchPromise +}) diff --git a/test/utils/event-loop-blocker.js b/test/utils/event-loop-blocker.js new file mode 100644 index 00000000000..9c2ec5075f0 --- /dev/null +++ b/test/utils/event-loop-blocker.js @@ -0,0 +1,10 @@ +'use strict' + +function eventLoopBlocker (ms) { + const nil = new Int32Array(new SharedArrayBuffer(4)) + Atomics.wait(nil, 0, 0, ms) +} + +module.exports = { + eventLoopBlocker +}