mattrguerra/meridian-ops-boardmainPrivate on GitHub, published here in full

retry.ts

Language TypeScript532 B12 lines

packages/shared/src/retry.ts

  1. /** The default sleep for every client. Tests inject their own to skip real time. */
  2. export const sleep = (ms: number): Promise<void> => new Promise((r) => setTimeout(r, ms))
  3. /**
  4. * Retry delay: 2s base, doubling per attempt. `jitterMs` adds up to that many
  5. * random milliseconds so parallel workers that failed together do not retry
  6. * together.
  7. */
  8. export function backoffMs(attempt: number, jitterMs = 0): number {
  9. const base = 2000 * 2 ** attempt
  10. return jitterMs > 0 ? base + Math.floor(Math.random() * jitterMs) : base
  11. }