From 99100b6f927d69bf803bcecf460bb07fb8a74c18 Mon Sep 17 00:00:00 2001 From: Ricardo Barbosa <3788982+nextlevelbeard@users.noreply.github.com> Date: Fri, 25 Mar 2022 22:44:02 +0100 Subject: [PATCH 1/2] Backport #1543: Initialize globalResponse in case of ignored HTTPError --- source/as-promise/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/as-promise/index.ts b/source/as-promise/index.ts index efd94703c..4d8d5e041 100644 --- a/source/as-promise/index.ts +++ b/source/as-promise/index.ts @@ -124,13 +124,13 @@ export default function asPromise(normalizedOptions: NormalizedOptions): Canc return; } + globalResponse = response; + if (!isResponseOk(response)) { request._beforeError(new HTTPError(response)); return; } - globalResponse = response; - resolve(request.options.resolveBodyOnly ? response.body as T : response as unknown as T); }); From d43781d46b205db8dffa99ebe83bf52fed83e3ea Mon Sep 17 00:00:00 2001 From: Ricardo Barbosa <3788982+nextlevelbeard@users.noreply.github.com> Date: Wed, 30 Mar 2022 14:57:26 +0200 Subject: [PATCH 2/2] Add test for disabled throwHttpErrors --- test/promise.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/promise.ts b/test/promise.ts index 70dcb937e..3e01601c6 100644 --- a/test/promise.ts +++ b/test/promise.ts @@ -85,3 +85,13 @@ test('promise.json() can be called before a file stream body is open', withServe await Promise.all(checks); }); + +test('promise.json() does not fail when server returns an error and throwHttpErrors is disabled', withServer, async (t, server, got) => { + server.get('/', (_request, response) => { + response.statusCode = 400; + response.end('{}'); + }); + + const promise = got('', {throwHttpErrors: false}); + await t.notThrowsAsync(promise.json()); +});