fix: add workaround for nodejs/undici#1305 required to remove sec-fetch-mode header

This commit is contained in:
Opliko
2024-01-22 23:12:19 +01:00
committed by Julian Lam
parent 9885f94a2b
commit 2cb370882b

View File

@@ -7,6 +7,17 @@ exports.jar = function () {
return new CookieJar();
};
// Initialize fetch - required for globalDispatcher to be available
fetch().catch(() => null);
// Workaround for https://github.com/nodejs/undici/issues/1305
class FetchAgent extends global[Symbol.for('undici.globalDispatcher.1')].constructor {
dispatch(opts, handler) {
delete opts.headers['sec-fetch-mode'];
return super.dispatch(opts, handler);
}
}
const fetchAgent = new FetchAgent();
async function call(url, method, { body, timeout, jar, ...config } = {}) {
let fetchImpl = fetch;
if (jar) {
@@ -21,6 +32,7 @@ async function call(url, method, { body, timeout, jar, ...config } = {}) {
'content-type': 'application/json',
...config.headers,
},
dispatcher: fetchAgent,
};
if (timeout > 0) {
opts.signal = AbortSignal.timeout(timeout);