retry.ts
Language TypeScript532 B12 lines
/** The default sleep for every client. Tests inject their own to skip real time. */export const sleep = (ms: number): Promise<void> => new Promise((r) => setTimeout(r, ms))/*** Retry delay: 2s base, doubling per attempt. `jitterMs` adds up to that many* random milliseconds so parallel workers that failed together do not retry* together.*/export function backoffMs(attempt: number, jitterMs = 0): number {const base = 2000 * 2 ** attemptreturn jitterMs > 0 ? base + Math.floor(Math.random() * jitterMs) : base}