UNPKG

@lodestar/utils

Version:

Utilities required across multiple lodestar packages

21 lines 778 B
import { anySignal } from "any-signal"; import { ErrorAborted, TimeoutError } from "./errors.js"; import { sleep } from "./sleep.js"; export async function withTimeout(asyncFn, timeoutMs, signal) { if (signal?.aborted) { throw new ErrorAborted(); } const timeoutAbortController = new AbortController(); const timeoutAndParentSignal = anySignal([timeoutAbortController.signal, ...(signal ? [signal] : [])]); async function timeoutPromise(signal) { await sleep(timeoutMs, signal); throw new TimeoutError(); } try { return await Promise.race([asyncFn(timeoutAndParentSignal), timeoutPromise(timeoutAndParentSignal)]); } finally { timeoutAbortController.abort(); } } //# sourceMappingURL=timeout.js.map