/** * Polyfill for Promise.withResolvers() (ES2024, Node 22+). * package.json declares "engines": { "node": ">=18.0.0" } so we can't use the native one. */ export function withResolvers(): PromiseWithResolvers { let resolve!: (value: T | PromiseLike) => void let reject!: (reason?: unknown) => void const promise = new Promise((res, rej) => { resolve = res reject = rej }) return { promise, resolve, reject } }