Rate Limit
Last updated
{
"message": "Too Many Requests"
}// Pseudo-code example of exponential backoff with jitter
function fetchWithBackoff(url, maxRetries = 5) {
let retries = 0;
while (retries < maxRetries) {
try {
const response = await fetch(url);
if (response.status !== 429) {
return response; // Success or different error
}
// Calculate backoff time with jitter
const baseWaitTime = Math.pow(2, retries) * 1000; // 1s, 2s, 4s, 8s, 16s
const jitter = Math.random() * 0.5 * baseWaitTime;
const waitTime = baseWaitTime + jitter;
console.log(`Rate limited. Waiting ${waitTime/1000} seconds before retry ${retries + 1}/${maxRetries}`);
await sleep(waitTime);
retries++;
} catch (error) {
// Handle other errors
throw error;
}
}
throw new Error("Maximum retry attempts reached");
}