Декоратор повторных попыток

Medium
PromiseAsyncError HandlingOzon

Реализуйте функцию retry(fn, retries, delay), которая:

  1. Вызывает асинхронную функцию fn
  2. Если fn бросает ошибку — повторяет вызов до retries раз с паузой delay мс
  3. Если все попытки неудачны — реджектится с последней ошибкой
let attempt = 0;
const flaky = () => {
  attempt++;
  if (attempt < 3) throw new Error("fail");
  return "ok";
};
await retry(flaky, 3, 100); // => "ok"

Примеры

Пример 1
Вход:
retry(flaky, 3, 100)
Выход:
ok
Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода