perf: use .abort.bind() instead of arrow closures to prevent memory leaks (#7174)

This commit is contained in:
Marcus Castro
2026-02-06 20:30:29 -03:00
committed by Peter Steinberger
parent d637a26350
commit d9c582627c
12 changed files with 17 additions and 17 deletions

View File

@@ -185,7 +185,7 @@ async function withTimeout<T>(
fn: (signal: AbortSignal) => Promise<T>,
): Promise<T> {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
const timer = setTimeout(controller.abort.bind(controller), timeoutMs);
try {
return await fn(controller.signal);
} finally {

View File

@@ -36,7 +36,7 @@ function combineAbortSignals(a?: AbortSignal, b?: AbortSignal): AbortSignal | un
}
const controller = new AbortController();
const onAbort = () => controller.abort();
const onAbort = controller.abort.bind(controller);
a?.addEventListener("abort", onAbort, { once: true });
b?.addEventListener("abort", onAbort, { once: true });
return controller.signal;

View File

@@ -24,7 +24,7 @@ async function waitForSandboxCdp(params: { cdpPort: number; timeoutMs: number })
while (Date.now() < deadline) {
try {
const ctrl = new AbortController();
const t = setTimeout(() => ctrl.abort(), 1000);
const t = setTimeout(ctrl.abort.bind(ctrl), 1000);
try {
const res = await fetch(url, { signal: ctrl.signal });
if (res.ok) {

View File

@@ -65,7 +65,7 @@ export function withTimeout(signal: AbortSignal | undefined, timeoutMs: number):
return signal ?? new AbortController().signal;
}
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
const timer = setTimeout(controller.abort.bind(controller), timeoutMs);
if (signal) {
signal.addEventListener(
"abort",