Skip to content

Commit 2ab94fd

Browse files
committed
Fix hang on revalidated cached responses
Fixes #2317
1 parent f1cc7b2 commit 2ab94fd

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
"keyv": "^5.5.3",
5959
"lowercase-keys": "^3.0.0",
6060
"p-cancelable": "^4.0.1",
61-
"responselike": "^3.0.0",
61+
"responselike": "^4.0.2",
6262
"type-fest": "^4.26.1"
6363
},
6464
"devDependencies": {

source/core/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,8 +1086,13 @@ export default class Request extends Duplex implements RequestEvents<Request> {
10861086

10871087
if (request) {
10881088
const fix = () => {
1089+
// For ResponseLike objects from cache, set complete to true if not already set.
1090+
// For real HTTP responses, copy from the underlying response.
10891091
if (response.req) {
10901092
response.complete = response.req.res.complete;
1093+
} else if (response.complete === undefined) {
1094+
// ResponseLike from cache should have complete = true
1095+
response.complete = true;
10911096
}
10921097
};
10931098

test/cache.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ test('response.complete is true when using keepalive agent', withServer, async (
482482
t.true(first.complete);
483483
});
484484

485-
test.failing('revalidated uncompressed responses are retrieved from cache', withServer, async (t, server, got) => {
485+
test('revalidated uncompressed responses are retrieved from cache', withServer, async (t, server, got) => {
486486
let revalidated = false;
487487

488488
const payload = JSON.stringify([1]);
@@ -525,7 +525,7 @@ test.failing('revalidated uncompressed responses are retrieved from cache', with
525525
});
526526
});
527527

528-
test.failing('revalidated compressed responses are retrieved from cache', withServer, async (t, server, got) => {
528+
test('revalidated compressed responses are retrieved from cache', withServer, async (t, server, got) => {
529529
let revalidated = false;
530530

531531
const payload = JSON.stringify([1]);

0 commit comments

Comments
 (0)