From bc3b366ac69abdab10ed3c002dd07632a7b9a044 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 15 Aug 2018 05:57:01 -0400 Subject: [PATCH] fix: Handling errors before retrying request (#142) [skip-ci] --- src/infrastructure/RequestHelper.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/infrastructure/RequestHelper.js b/src/infrastructure/RequestHelper.js index 10dd5d3a..079e366d 100644 --- a/src/infrastructure/RequestHelper.js +++ b/src/infrastructure/RequestHelper.js @@ -99,13 +99,20 @@ async function getPaginated(service, endpoint, options = {}, sleepOnRateLimit = return data; } catch (err) { + if( + !err.response || + !err.response.headers || + !err.response.headers['retry-after'] || + parseInt(err.statusCode, 10) != 429 + ) throw error; + const sleepTime = parseInt(err.response.headers['retry-after'], 10); - if (sleepOnRateLimit && parseInt(err.statusCode, 10) === 429 - && sleepTime) { - await wait(sleepTime * 1000); - return getPaginated(service, endpoint, options, sleepOnRateLimit); - } - throw err; + + if (!sleepTime) throw error; + + await wait(sleepTime * 1000); + + return getPaginated(service, endpoint, options); } }