function retryablePromise(retries) { return new Promise((resolve, reject) => { reject(); }) .catch(() => { if (retries > 0) { return retryablePromise(retries - 1); } else { return Promise.reject(); } }); } retryablePromise(5) .then(() => { console.log('resolved!'); }) .catch(() => { console.log('all attempts failed'); });