Реализуйте декоратор withFallback
, который позволяет вызвать асинхронную функцию и в случае реджекта выполнить «запасную» синхронную функцию.
Например, мы асинхронно запрашиваем курс с валютной биржи:
function exchangeRate(currency) { return new Promise((resolve, reject) => { if (Math.random() < 0.5) { // магически определяет курс валюты resolve(Math.random() * 100); } throw "error"; }); } const fallback = (currency) => ({ "usd": 30, "eur": 40, })[currency]; const exchangeRateEnhanced = withFallback( exchangeRate, fallback, ); // если реджект, вернет 30 exchangeRateEnhanced("usd").then(console.log);