Skip to content

Instantly share code, notes, and snippets.

@evilpie
Created January 16, 2022 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evilpie/fcbf5ea15440462fbbbfffd2c0e1a761 to your computer and use it in GitHub Desktop.
Save evilpie/fcbf5ea15440462fbbbfffd2c0e1a761 to your computer and use it in GitHub Desktop.
Test case showing read fulfillment after pipeTo shutdown
<!doctype html>
<html>
<body>
<script>
var abortController = new AbortController();
let i = 0;
let aborted = false;
var rs = new ReadableStream({
start(controller) {
},
pull(controller) {
console.log("pull")
ctrl = controller;
if (!aborted) {
aborted = true;
setTimeout(() => {
console.log("triggering abort");
abortController.abort()
}, 300);
}
return new Promise(resolve => {
setTimeout(() => {
let chunk = "testing-" + i++;
console.log("enqueue", chunk)
controller.enqueue(chunk)
resolve();
}, 100);
})
}
});
var ws = new WritableStream({
write(chunk) {
console.log("write", chunk);
return new Promise(resolve => {
setTimeout(() => {
console.log("resolving write promise", chunk);
resolve();
}, 500);
});
}
}, new CountQueuingStrategy({highWaterMark: 10}));
rs.pipeTo(ws, { signal: abortController.signal, preventAbort: true, preventCancel: true }).then(() => {
console.log("pipeTo resolution");
}, (error) => {
console.log("pipeTo rejection", error)
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment