From 1034086ff603e28e3a37c8157a74cbc625f658f9 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 26 Jan 2021 09:00:01 -0800 Subject: [PATCH] fix(backend): allow calling 'json' again on 403 failure (#4880) --- packages/netlify-cms-lib-util/src/API.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/netlify-cms-lib-util/src/API.ts b/packages/netlify-cms-lib-util/src/API.ts index 0f773101..628d23c9 100644 --- a/packages/netlify-cms-lib-util/src/API.ts +++ b/packages/netlify-cms-lib-util/src/API.ts @@ -57,15 +57,16 @@ export const requestWithBackoff = async ( throw new Error(text); } else if (response.status === 403) { // GitHub too many requests - const { message } = await response.json().catch(() => ({ message: '' })); - if (message.match('API rate limit exceeded')) { + const json = await response.json().catch(() => ({ message: '' })); + if (json.message.match('API rate limit exceeded')) { const now = new Date(); const nextWindowInSeconds = response.headers.has('X-RateLimit-Reset') ? parseInt(response.headers.get('X-RateLimit-Reset')!) : now.getTime() / 1000 + 60; - throw new RateLimitError(message, nextWindowInSeconds); + throw new RateLimitError(json.message, nextWindowInSeconds); } + response.json = () => Promise.resolve(json); } return response; } catch (err) {