Задача

Необходимо реализовать функцию retry, которая может принимать в себя 2 параметра:

  1. асинхронная функция;
  2. config: { count: number, delay: (count) => number }.

Если асинхронная функция возвращает промис в статусе rejected, то необходимо перезапустить данную функцию config.count раз с задержкой в config.delay мс, пока промис не перейдёт в статус fulfilled либо не закончится количество возможных попыток config.count. Функция retry должна возвращать промис.

Решение

См. также