Skip to content

Leaked Concurrency Handle (ARCH3085)

Key typescript.performance.leaked-concurrency-handle · Severity warning · Category performance

Concurrency primitives without a bounded lifetime (tasks with no cancellation signal, locks never released) run indefinitely, causing resource leaks and backpressure.

function startPolling(): void {
setInterval(() => {
void poll();
}, 1000);
// never cleared - runs forever
}
function startPolling(signal: AbortSignal): void {
const timer = setInterval(() => {
void poll();
}, 1000);
signal.addEventListener("abort", () => clearInterval(timer));
}

Tie tasks and timers to a cancellation signal; release locks in a finally block.