Skip to content

Commit 95c4d80

Browse files
committed
Fix stream consumption in the browser environment
Browsers don't yet support async iteration of ReadableStream so we need to do this manually
1 parent 64b9bf9 commit 95c4d80

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

index.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,19 @@ class Replicate {
296296
fetch: this.fetch,
297297
options: { signal },
298298
});
299-
yield* stream;
299+
300+
const reader = stream.getReader();
301+
302+
while (true) {
303+
const { done, value } = await reader.read();
304+
305+
if (done) {
306+
break;
307+
}
308+
309+
yield value;
310+
}
311+
reader.releaseLock();
300312
} else {
301313
throw new Error("Prediction does not support streaming");
302314
}

lib/stream.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,15 @@ function createReadableStream({ url, fetch, options = {} }) {
7373
.pipeThrough(new TextDecoderStream())
7474
.pipeThrough(new EventSourceParserStream());
7575

76-
for await (const event of stream) {
76+
const reader = stream.getReader();
77+
78+
while (true) {
79+
const { done, value: event } = await reader.read();
80+
81+
if (done) {
82+
break;
83+
}
84+
7785
if (event.event === "error") {
7886
controller.error(new Error(event.data));
7987
break;
@@ -88,6 +96,7 @@ function createReadableStream({ url, fetch, options = {} }) {
8896
}
8997
}
9098

99+
reader.releaseLock();
91100
controller.close();
92101
},
93102
});

0 commit comments

Comments
 (0)