severo's picture
severo HF Staff
create dockerfile and app
109dd1e
raw
history blame
775 Bytes
const sleep = async (delay) =>
await new Promise((resolve) => setTimeout(resolve, delay));
export const fetchAndRetry = async (
url,
options,
{ fetchAfterMs = 200, retriesAfterMs = [200, 5 * 1000, 60 * 1000] } = {}
) => {
let error;
for (let retryAfterMs of retriesAfterMs) {
try {
await sleep(fetchAfterMs);
const response = await fetch(url, options);
if (!response.ok) {
console.log(
`Failed to fetch ${url}: ${response.status} ${
response.statusText
} - Headers: ${JSON.stringify(response.headers)}`
);
await sleep(response.headers.get("Retry-After") ?? retryAfterMs);
continue;
}
return response;
} catch (e) {
error = e;
}
}
throw error;
};