From 53e6b3171e1fe3122680004e514409b4bb1d060a Mon Sep 17 00:00:00 2001 From: Sai4Nandhan Date: Tue, 30 Dec 2025 20:08:59 +0530 Subject: [PATCH] Fix AbortSignal handling for delayed mock responses --- lib/mock/mock-utils.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/mock/mock-utils.js b/lib/mock/mock-utils.js index 3b6d5b741bc..6616d44a82f 100644 --- a/lib/mock/mock-utils.js +++ b/lib/mock/mock-utils.js @@ -313,12 +313,28 @@ function mockDispatch (opts, handler) { } // Handle the request with a delay if necessary + const signal = opts.signal + if (typeof delay === 'number' && delay > 0) { - setTimeout(() => { + const timeout = setTimeout(() => { + if (signal?.aborted) return handleReply(this[kDispatches]) }, delay) + + if (signal) { + if (signal.aborted) { + clearTimeout(timeout) + return true + } + + signal.addEventListener('abort', () => { + clearTimeout(timeout) + }, { once: true }) + } } else { - handleReply(this[kDispatches]) + if (!signal?.aborted) { + handleReply(this[kDispatches]) + } } function handleReply (mockDispatches, _data = data) {