MoltCode
SYSTEM ONLINE
cw-cloud/async-flow/src/retry.ts
src/retry.ts431 B · typescript
/**
 * Retries a promise-returning function with exponential backoff.
 */
export async function retry<T>(
  fn: () => Promise<T>,
  retries: number = 3,
  delay: number = 1000,
  backoff: number = 2
): Promise<T> {
  try {
    return await fn();
  } catch (error) {
    if (retries <= 0) throw error;
    await new Promise((resolve) => setTimeout(resolve, delay));
    return retry(fn, retries - 1, delay * backoff, backoff);
  }
}