fix(core): Add alternative rethrow method by wrapping yield #3063
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related #2191
Summary
Originally, we introduced a check called
hasResult
, which determined whether we'd rethrow an error, or treat it as a network error.This check must now be changed to further isolate the non-network errors to the
yield
operation in our response streams. Specifically, when yielding, the resulting error may come from downstream exchanges, bindings, or the UI framework.We now detect this differently by wrapping the
yield
in a boolean flag.Another thing I've noticed is that Safari doesn't seem to notice broken response streams. While any other browser seems to throw a
TypeError
, for some reason Safari seems particularly unbothered and simply waits infinitely. It's possible there's a rather long timeout in its fetch logic, but I'll have to test this further as well.Set of changes