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

@@ -42,7 +42,7 @@ export function wrapFetchWithAbortSignal(fetchImpl: typeof fetch): typeof fetch
return fetchImpl(input, patchedInit);
}
const controller = new AbortController();
const onAbort = () => controller.abort();
const onAbort = controller.abort.bind(controller);
if (signal.aborted) {
controller.abort();
} else {

View File

@@ -50,8 +50,8 @@ function buildAbortSignal(params: { timeoutMs?: number; signal?: AbortSignal }):
}
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
const onAbort = () => controller.abort();
const timeoutId = setTimeout(controller.abort.bind(controller), timeoutMs);
const onAbort = controller.abort.bind(controller);
if (signal) {
if (signal.aborted) {
controller.abort();

View File

@@ -5,7 +5,7 @@ export async function fetchJson(
fetchFn: typeof fetch,
): Promise<Response> {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
const timer = setTimeout(controller.abort.bind(controller), timeoutMs);
try {
return await fetchFn(url, { ...init, signal: controller.signal });
} finally {