mirror of
https://github.com/tenrok/axios.git
synced 2026-05-27 14:47:43 +03:00
19 lines
537 B
JavaScript
19 lines
537 B
JavaScript
|
|
export const retryNetwork = async (fn, retries = 3, delay = 1000) => {
|
|
let attempt = 0, sleep;
|
|
|
|
do {
|
|
try {
|
|
return await fn()
|
|
} catch (err) {
|
|
if (err.code === 'ERR_NETWORK' && attempt++ < retries) {
|
|
sleep = attempt * attempt * delay;
|
|
console.warn(`[ERR_NETWORK]: Attempt ${attempt}/${retries}${err.config ? ' [' + err.config.url + ']' : ''} sleep [${sleep}ms]`);
|
|
await new Promise(resolve => setTimeout(resolve, sleep));
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
} while (true);
|
|
}
|