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);
}
}