Re: [whatwg/streams] Clarify realm and task-queuing situation in pipeTo() (#902)

I'm concerned that this change is user-visible, and that it will be problematic to implement in Chrome. Take this example:

```javascript
async function ObserveTaskQueue() {
  let pipeToComplete = false;
  const rs = new ReadableStream({
    async start(controller) {
      controller.close();
      for (let i = 0; i < 1000; ++i) {
        if (pipeToComplete) {
          console.log('done');
          return;
        }
        await Promise.resolve();
      }
      console.log('fail');
    }
  });
  const ws = new WritableStream();
  await rs.pipeTo(ws);
  pipeToComplete = true;
}
```

With Chrome's current implementation, this function prints "done". I believe that Chrome's implementation is compliant with the standard in this respect. I think an implementation is also permitted to print "fail".

However, if I understand correctly, no task from the DOM manipulation task source can run while microtasks are executing. If this change to the standard is made, all implementations must print "fail".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/902#issuecomment-371440591

Received on Thursday, 8 March 2018 10:05:08 UTC