-
-
Notifications
You must be signed in to change notification settings - Fork 971
Description
Describe the bug
- Node.js version:
18.0.0 - OS & version:
Windows 10,Raspbian Buster,Ubuntu 20.04 - Got version:
11.6.0and higher
Actual behavior
The beforeError hook fires regardless of whether or not the throwHttpErrors option is set to false and the request fails. This has been (erroneously, it seems?) changed in #1384 - more specifically in as-promise/index.ts. This change wasn't mentioned anywhere in the 11.6.0 release, or in other releases since.
The behaviour is correct in all versions up until 11.6.0, where this PR was merged.
Expected behavior
The beforeError hook should not fire if the throwHttpErrors option is set to false, and the request fails.
Code to reproduce
const got = require("got");
const opts = {
throwHttpErrors: false,
hooks: {
beforeError: [
(e) => {
console.log("beforeError hook", e.name);
}
]
}
};
(async () => {
const res = await got.get("https://httpstat.us/400", opts);
console.log("Response", res.body);
})();In versions prior to 11.6.0, the request response will be logged into console. In versions since, the beforeError hook will take precedence, log the error from it, and the response will not be logged.
As an alternative to a code-based fix, the documentation could be adjusted instead, as it currently contains no reference to such behaviour.
Checklist
- I have read the documentation.
- I have tried my code with the latest version of Node.js and Got.