From a6efb7752dcd9110aa079f57ef33ef78325023c4 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Fri, 9 Jan 2026 12:17:25 -0500 Subject: [PATCH] docs(docs-infra): avoid persistent AbortSignal listener in wait debounce in search Cleans up the abort listener once the timeout resolves to prevent it from remaining attached longer than necessary. (cherry picked from commit 94b707957a26acf73865630760a5c771911625a9) --- adev/shared-docs/services/search.service.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/adev/shared-docs/services/search.service.ts b/adev/shared-docs/services/search.service.ts index a557ebd2442..eb44dfa42f8 100644 --- a/adev/shared-docs/services/search.service.ts +++ b/adev/shared-docs/services/search.service.ts @@ -228,16 +228,19 @@ function matched(snippet: SnippetResult | undefined): boolean { */ function wait(ms: number, signal: AbortSignal): Promise { return new Promise((resolve, reject) => { - const timeout = setTimeout(() => resolve(), ms); + let timeout: ReturnType | undefined; - signal.addEventListener( - 'abort', - () => { - clearTimeout(timeout); - reject(new Error('Operation aborted')); - }, - {once: true}, - ); + const onAbort = () => { + clearTimeout(timeout); + reject(new Error('Operation aborted')); + }; + + timeout = setTimeout(() => { + signal.removeEventListener('abort', onAbort); + resolve(); + }, ms); + + signal.addEventListener('abort', onAbort, {once: true}); }); }