perf(ext/fetch): speed up resp.clone() (#24812)

(cherry picked from commit b153065e44)
This commit is contained in:
Luca Casonato 2024-07-31 19:57:47 +02:00 committed by crowlkats
parent e23512fde3
commit f8a9d8defc
No known key found for this signature in database
GPG Key ID: A82C9D461FC483E8

View File

@ -196,10 +196,23 @@ class InnerBody {
* @returns {InnerBody}
*/
clone() {
const { 0: out1, 1: out2 } = readableStreamTee(this.stream, true);
this.streamOrStatic = out1;
const second = new InnerBody(out2);
second.source = core.deserialize(core.serialize(this.source));
let second;
if (
!ObjectPrototypeIsPrototypeOf(
ReadableStreamPrototype,
this.streamOrStatic,
) && !this.streamOrStatic.consumed
) {
second = new InnerBody({
body: this.streamOrStatic.body,
consumed: false,
});
} else {
const { 0: out1, 1: out2 } = readableStreamTee(this.stream, true);
this.streamOrStatic = out1;
second = new InnerBody(out2);
}
second.source = this.source;
second.length = this.length;
return second;
}