Skip to content

ReadableStream body issue since v1.14.2 #260

@rphlmr

Description

@rphlmr

👋 Hello there, I'm the maintenainer of react-router-hono-server

Since the removal of getInternalBody, responseViaResponseObject does not return a ReadableStream body through writeFromReadableStream but as a Uint8Array.

I wonder if it is expected since it was handled by getInternalBody.

node-server/src/listener.ts

Lines 142 to 160 in b5663eb

if (
transferEncoding ||
contentEncoding ||
contentLength ||
// nginx buffering variant
(accelBuffering && regBuffer.test(accelBuffering as string)) ||
!regContentType.test(contentType as string)
) {
outgoing.writeHead(res.status, resHeaderRecord)
flushHeaders(outgoing)
await writeFromReadableStream(res.body, outgoing)
} else {
const buffer = await res.arrayBuffer()
resHeaderRecord['content-length'] = buffer.byteLength
outgoing.writeHead(res.status, resHeaderRecord)
outgoing.end(new Uint8Array(buffer))
}

This breaks React Router loader "defer" (returns an awaitable promise).

It seems to be handled by responseViaCache, so maybe we can do the same thing in responseViaResponseObject?

Maybe something like this? #259

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions