Retry example
retry.ts
async function fetchWithBackoff(url: string, attempts = 5) {
let delay = 500;
for (let i = 0; i < attempts; i++) {
const res = await fetch(url);
if (res.status !== 429) {
return res;
}
const retryAfter = Number(res.headers.get('Retry-After'));
const waitMs = Number.isFinite(retryAfter) && retryAfter > 0
? retryAfter * 1000
: delay + Math.floor(Math.random() * 200);
await new Promise((resolve) => setTimeout(resolve, waitMs));
delay *= 2;
}
throw new Error('Rate limit exceeded after retries');
}Important
Do not retry immediately in a tight loop. That amplifies throttling and can trigger wider service blocks.