Skip to content

Commit adae891

Browse files
committedJul 9, 2022
Revert "[fix] prevent responses from hanging"
This reverts commit 810c52b.
1 parent 9a36c92 commit adae891

File tree

5 files changed

+37
-21
lines changed

5 files changed

+37
-21
lines changed
 

Diff for: ‎.changeset/few-teachers-deliver.md

-10
This file was deleted.

Diff for: ‎packages/adapter-node/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@
4242
"@types/node": "^16.11.36",
4343
"c8": "^7.11.3",
4444
"compression": "^1.7.4",
45+
"node-fetch": "^3.2.4",
4546
"polka": "^1.0.0-next.22",
4647
"rimraf": "^3.0.2",
4748
"rollup": "^2.75.3",
4849
"sirv": "^2.0.2",
4950
"typescript": "^4.7.4",
50-
"undici": "^5.6.1",
5151
"uvu": "^0.5.3"
5252
}
5353
}

Diff for: ‎packages/adapter-node/tests/smoke.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { test } from 'uvu';
22
import { create_kit_middleware } from '../src/handler.js';
3-
import polka from 'polka';
43
import * as assert from 'uvu/assert';
5-
import { fetch } from 'undici';
4+
import fetch from 'node-fetch';
5+
import polka from 'polka';
66

77
const { PORT = 3000 } = process.env;
88
const DEFAULT_SERVER_OPTS = { render: () => {} };

Diff for: ‎packages/kit/src/node/index.js

+31-5
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,38 @@ export async function setResponse(res, response) {
8989

9090
res.writeHead(response.status, headers);
9191

92-
if (response.body instanceof Readable) {
93-
response.body.pipe(res);
92+
if (response.body) {
93+
let cancelled = false;
94+
95+
const reader = response.body.getReader();
96+
97+
res.on('close', () => {
98+
reader.cancel();
99+
cancelled = true;
100+
});
101+
102+
const next = async () => {
103+
const { done, value } = await reader.read();
104+
105+
if (cancelled) return;
106+
107+
if (done) {
108+
res.end();
109+
return;
110+
}
111+
112+
res.write(Buffer.from(value), (error) => {
113+
if (error) {
114+
console.error('Error writing stream', error);
115+
res.end();
116+
} else {
117+
next();
118+
}
119+
});
120+
};
121+
122+
next();
94123
} else {
95-
if (response.body) {
96-
res.write(new Uint8Array(await response.arrayBuffer()));
97-
}
98124
res.end();
99125
}
100126
}

Diff for: ‎pnpm-lock.yaml

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.