no-hand-rolled-sleep
Disallow uncancellable promisified timers and timeout arms.
Why
A timer that outlives an aborted operation or a lost promise race retains work and can keep the process alive until it fires.
Fix
Use node:timers/promises with an abort signal for delays, or pass AbortSignal.timeout(...) to the timed operation.
Examples
await new Promise((resolve) => setTimeout(resolve, 500));import { setTimeout as sleep } from "node:timers/promises";await sleep(500, undefined, { signal });