Код Middle Ожидания и флаки обновлено
Ретрай только на временные ошибки
Условие
Моделируем повтор запроса. responses это ответы на последовательные попытки: число (HTTP-статус) или строка с кодом сетевой ошибки. Напишите retryOutcome(responses, maxAttempts).
Повторять можно только при временной ошибке: статусы 429, 502, 503, 504 и строки "ECONNRESET", "ETIMEDOUT". Любой другой ответ (включая 2xx и остальные 4xx/5xx) окончательный. Попыток не больше maxAttempts. Вернуть { result, attempts }, где result это последний полученный ответ. Гарантируется, что responses хватает на все попытки.
Примеры
retryOutcome([503, 503, 200], 5) // {"result":200,"attempts":3}
retryOutcome([200], 3) // {"result":200,"attempts":1}
retryOutcome([404, 200], 3) // {"result":404,"attempts":1}
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.