diff --git a/src/lib/addons/addon.js b/src/lib/addons/addon.js index 21b22619f1..04c9285f66 100644 --- a/src/lib/addons/addon.js +++ b/src/lib/addons/addon.js @@ -28,16 +28,36 @@ class Addon { async fetchRetry(url, options = {}, retries = 1, backoff = 300) { const retryCodes = [408, 500, 502, 503, 504, 522, 524]; - const res = await fetch(url, options); - if (res.ok) { + try { + const res = await fetch(url, options); + if (res.ok) { + return res; + } + if (retries > 0 && retryCodes.includes(res.status)) { + setTimeout(() => { + return this.fetchRetry( + url, + options, + retries - 1, + backoff * 2, + ); + }, backoff); + } return res; + } catch (error) { + this.logger.warn(error); + if (retries > 0) { + setTimeout(() => { + return this.fetchRetry( + url, + options, + retries - 1, + backoff * 2, + ); + }, backoff); + } + return { status: 500 }; } - if (retries > 0 && retryCodes.includes(res.status)) { - setTimeout(() => { - return this.fetchRetry(url, options, retries - 1, backoff * 2); - }, backoff); - } - return res; } }