Реализуйте функцию retry(fn, retries, delay), которая:
fnfn бросает ошибку — повторяет вызов до retries раз с паузой delay мсlet attempt = 0;
const flaky = () => {
attempt++;
if (attempt < 3) throw new Error("fail");
return "ok";
};
await retry(flaky, 3, 100); // => "ok"
Используйте цикл for от 0 до retries включительно. В блоке catch — если это последняя итерация, пробрасывайте ошибку (throw err). Иначе await задержку через new Promise(r => setTimeout(r, delay)).
Что ещё могут спросить: реализовать retryWithBackoff — каждая следующая попытка ждёт в 2× дольше. Или добавить shouldRetry(err) — колбэк, который решает, стоит ли повторять именно эту ошибку.