Skip to content

[Bug?]: Middleware with returned undici response ignores the content-type if the response body is async. #1426

@dominikzogg

Description

@dominikzogg

Duplicates

  • I have searched the existing issues

Latest version

  • I have tested the latest version

Current behavior 😯

I get Content-Type: text/html if i return a response in a middleware with a async body.

import { Response } from 'undici';

return new Response(bodyStream.iterator(), {
      status: 200,
      statusText: 'OK',
      headers: {'content-type': 'application/json'},
    });

If the bodyStream is not async it does work.

import { Response } from 'undici';

const streamToBuffer = async (stream: Stream): Promise<Buffer> => {
  return new Promise<Buffer>((resolve, reject) => {
    const list: Array<Uint8Array> = [];

    stream.on('data', (chunk) => list.push(chunk));
    stream.on('end', () => resolve(Buffer.concat(list)));
    stream.on('error', (error) => reject(error));
  });
};

return new Response(await streamToBuffer(bodyStream), {
      status: 200,
      statusText: 'OK',
      headers: {'content-type': 'application/json'},
    });

Expected behavior 🤔

I expect that the content-type passed as a headers is maintained in async and sync bodies on response.

Steps to reproduce 🕹

Steps:

  1. Create a Middleware
  2. Return a Response (undici) with a async bodyInit and a headersInit with a content-type for example 'application/json'
  3. Do a request which hits the middleware and check the content-type on the response.

Context 🔦

No response

Your environment 🌎

System:
  OS: Fedora 39
  CPU: x86_64
Binaries:
  Node: 20.11.1 (/run/user/1000/fnm_multishells/128003_1711479810299/bin/node)
  pnpm: 8.15.4 (/run/user/1000/fnm_multishells/128003_1711479810299/bin/pnpm)
npmPackages:
 all of solid start +
 "undici": "^6.10.2"
 "undici-types": "^6.10.1"

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions