Retry on failure
EasyAsync code5 min
Write a function retry(fn). It calls the async function fn with no arguments. If the promise from fn rejects, call fn again. Make no more than three attempts in total.
retry returns a promise with the result of the first successful attempt. If all three attempts fail, return a promise that rejects with the error of the last attempt.
Examples
await retry(() => Promise.resolve('ok'))Returns 'ok'
await retry(() => Promise.reject(new Error('down'))).catch((e) => e.message)Returns 'down'
Loading the editor...
- Success on the first try, fn is called once
- Two failures, then success
- Three failures, the last error comes out
Hidden tests run on Submit