···11+---
22+'fetch-nodeshim': patch
33+---
44+55+Avoid `setHeaders` to increase consistency, fix `Set-Cookie` case for older Node versions, and work around bug in Bun <=1.3.9
+15-4
src/fetch.ts
···3333 outgoing: http.OutgoingMessage,
3434 headers: Headers
3535) => {
3636- if (typeof outgoing.setHeaders === 'function') {
3737- outgoing.setHeaders(headers);
3838- } else {
3939- for (const [key, value] of headers) outgoing.setHeader(key, value);
3636+ // Preassemble array headers, mostly only for Set-Cookie
3737+ // We're avoiding `getSetCookie` since support is unclear in Node 18
3838+ const collection: Record<string, string | string[]> = {};
3939+ for (const [key, value] of headers) {
4040+ if (Array.isArray(collection[key])) {
4141+ collection[key].push(value);
4242+ } else if (collection[key] != undefined) {
4343+ collection[key] = [collection[key], value];
4444+ } else {
4545+ collection[key] = value;
4646+ }
4747+ }
4848+ // We don't use `setHeaders` due to a Bun bug (Fix: https://github.com/oven-sh/bun/pull/27050)
4949+ for (const key in collection) {
5050+ outgoing.setHeader(key, collection[key]);
4051 }
4152};
4253