From 7b396e8bb2cad3aa80a2b2ad2e0fed87961b091e 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}); }); }