[whatwg/fetch] ReadableStreamDefaultReader.read() Errors Unavailable to Response Reader Rejection (#676)

Errors that originate in `ReadableStreamDefaultReader.read()` to not propagate to Promise rejections for `Response` stream reader (`Response.text()`, `Response.json()`, etc) errors.

```JavaScript
// Test 1 - ReadableStreamDefaultReader.read() error successfully propagated to catch()
new ReadableStream({
  start(controller) {
    // controller.close();

    controller.error(Error('Test 1 Error'));
  }
}).getReader().read()
.then(o => console.log('Test 1 OK', o))
.catch(error => console.error(error))


// Test 2 - ReadableStreamDefaultReader.read() error lost and unavailable to catch().
// Instead, TypeError: Failed to fetch is propagated
new Response(
  new ReadableStream({
    start(controller) {
      // controller.enqueue(new TextEncoder().encode('hello'))
      // controller.close();

      controller.error(Error('Test 2 Error'));
    }
  })
).text()
.then(string => console.log('Test 2 OK', string))
.catch(error => console.error(error))
```

Catching the originating errors in Promise rejections would be very useful to our applications so that we could take appropriate action.   For example, network errors that occur mid-download ([example](https://gist.github.com/AnthumChris/39ebe19f2f226e2858e0511febf2a002)) originate as "TypeError: network error" but are reported to the application as "TypeError: Failed to fetch".  Or perhaps we want to exit early and throw an error during a custom `read()` while parsing a large remote remote file (e.g. "Invalid character at position 30").

-- 
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/fetch/issues/676

Received on Wednesday, 28 February 2018 19:44:20 UTC