LGTM2, thanks for helping us consider the compat risks here. My 
recommendation to ship "normally" is to just set the feature flag to 
"stable" in main and let the change roll out through the normal release 
channels. Keep an eye out for bugs, and if there is some problem, that's 
when you'd use Finch to set the flag back off in the stable channel. As a 
non-Googler I can't speak to the process details of that, but hopefully a 
Googler can help if that does become needed.

On Tuesday, August 18, 2026 at 2:26:34 PM UTC-7 Taylor Brandstetter wrote:

> > We shouldn’t [ship normally] without trying to understand the risk, 
> though. What do you expect potential compatibility issues to look like for 
> this? Do developers often have logic branching on specific abort values for 
> these promises versus just logging them? Do we have Use Counters that could 
> put a high bar on the risk, like a counter for how often already-completed 
> fetches are aborted with a reason, or how often the Response methods are 
> called for a fetch in this state?
>
> I don't see any use counters specifically for providing an abort reason, 
> no. Branching logic on the error from the promises would be the risk, 
> although there's a good chance that we were just being overly cautious. I 
> have no reason to believe this would be particularly common. If others are 
> ok with it, I would suggest just shipping normally with 154. You mentioned 
> being ready to roll back via finch; does that mean we would keep the change 
> gated behind a flag, but roll it out to 100% immediately for 154 when it 
> branches? I'm not very familiar with finch (or this process) so bear with 
> me.
>
> I requested the WebKit signal (
> https://github.com/WebKit/standards-positions/issues/711) and the other 
> Prepare to Ship reviews, which I assume should be fairly trivial. I haven't 
> requested Prepare to Ship for Adoption yet as it requires the feature to be 
> stable for four weeks, and I just changed the milestone to 154.
>
> On Monday, August 17, 2026 at 11:44:29 AM UTC-7 Alex Russell wrote:
>
>> Hey Taylor,
>>
>> I'm going to LGTM1 this on the basis that we do not have compatible 
>> behaviour between WebKit/Chromium and Gecko at the moment, reducing the 
>> likely risk of breakage. That said, we do need the other review bits filled 
>> in (via chromestatus), and my LGTM is contingent on those, as well as 
>> requests for positions to Mozilla and WebKit.
>>
>> Best,
>>
>> Alex
>>
>>
>> On Monday, August 17, 2026 at 8:45:19 AM UTC-7 Taylor Brandstetter wrote:
>>
>>> > Can you please give a more specific link into the part of the spec 
>>> that defines this behavior?
>>>
>>> Sure thing; the body methods point to the steps for consuming a body: 
>>> https://fetch.spec.whatwg.org/#concept-body-consume-body
>>>
>>> Which point to the steps for fully reading a body: 
>>> https://fetch.spec.whatwg.org/#body-fully-read
>>>
>>> Which say to read all the bytes from the reader.
>>>
>>> And regarding the reader, the main abort steps (
>>> https://fetch.spec.whatwg.org/#http-network-fetch) say:
>>>    
>>>    1. 
>>>    
>>>    If fetchParams is aborted 
>>>    <https://fetch.spec.whatwg.org/#fetch-params-aborted>, then:
>>>    1. 
>>>       
>>>       Set response’s aborted flag 
>>>       <https://fetch.spec.whatwg.org/#concept-response-aborted>.
>>>       2. 
>>>       
>>>       If stream is readable 
>>>       <https://streams.spec.whatwg.org/#readablestream-readable>, then 
>>>       error <https://streams.spec.whatwg.org/#readablestream-error> 
>>>       stream with the result of deserialize a serialized abort reason 
>>>       <https://fetch.spec.whatwg.org/#deserialize-a-serialized-abort-reason>
>>>        given fetchParams’s controller 
>>>       <https://fetch.spec.whatwg.org/#fetch-params-controller>’s serialized 
>>>       abort reason 
>>>       
>>> <https://fetch.spec.whatwg.org/#fetch-controller-serialized-abort-reason> 
>>> and 
>>>       an implementation-defined 
>>>       <https://infra.spec.whatwg.org/#implementation-defined> realm 
>>>       <https://tc39.es/ecma262/#realm>.
>>>       
>>> So, both the readable stream and all the body methods consuming it 
>>> should be errored with the abort reason.
>>>
>>> > Can you request a WebKit signal?
>>>
>>> I didn't realize it was necessary just for filling a gap in the 
>>> implementation, but the wide review documentation 
>>> <https://www.chromium.org/blink/launching-features/wide-review/> does 
>>> call this case out, so I will request a signal and update the feature later.
>>>
>>> > I'm still unclear on which tests cover this change.
>>>
>>> I called them out there; "response.X() rejects with abort reason if 
>>> already aborted" (for each body method) and "Stream errors once aborted 
>>> with abort reason". They fail on everything but Firefox (well except for 
>>> the latter which doesn't run on Firefox); I'm assuming the dashboard wasn't 
>>> updated when you responded but you can see the failures now.
>>> > Can you say more about this roll out plan? This doesn't seem like the 
>>> kind of thing that would need to be rolled out gradually via experiment.
>>>
>>> @ricea had suggested using an experiment, I assume because the use of 
>>> fetch is so widespread and changing the type of error that's thrown could 
>>> have consequences, even if it's the intended behavior. But I'll let him 
>>> comment on that himself if he has anything to add.  
>>> > Lastly please request the other "Prepare to Ship" reviews in the 
>>> chromestatus entry (Privacy, WP Security, etc).
>>>
>>> Will do. Thanks for your review, Dan.
>>> On Monday, August 10, 2026 at 12:11:55 PM UTC-7 Dan Clark wrote:
>>>
>>>> *> Specification*
>>>> *> https://fetch.spec.whatwg.org <https://fetch.spec.whatwg.org/>*
>>>>
>>>> Can you please give a more specific link into the part of the spec that 
>>>> defines this behavior?
>>>>
>>>> *> WebKit: No signal*
>>>>
>>>> Can you request a WebKit signal?
>>>>
>>>> *> Is this feature fully tested by web-platform-tests 
>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
>>>>
>>>> *> Yes> https://wpt.fyi/results/fetch/api/abort/general.any.html 
>>>> <https://wpt.fyi/results/fetch/api/abort/general.any.html> Specifically 
>>>> the 
>>>> tests: * response.arrayBuffer() rejects with abort reason if already 
>>>> aborted (and other response methods such as body()) * Stream errors once 
>>>> aborted with abort reason. Underlying connection closed.*
>>>>
>>>> I'm still unclear on which tests cover this change. Looking at the test 
>>>> results 
>>>> <https://wpt.fyi/results/fetch/api/abort/general.any.html?label=master&product=chrome%5Bstable%5D&product=edge%5Bexperimental%5D&product=firefox%5Bexperimental%5D&product=safari%5Bexperimental%5D&aligned>
>>>>  all 
>>>> are already passing in Chrome Stable except for "Readable stream 
>>>> synchronously cancels with AbortError if aborted before reading" which 
>>>> doesn't seem to match this scenario.
>>>>
>>>> *> Rollout plan*
>>>> *> (RARE) Experiment users ramp up over time*
>>>>
>>>> Can you say more about this roll out plan? This doesn't seem like the 
>>>> kind of thing that would need to be rolled out gradually via experiment.
>>>>
>>>> Lastly please request the other "Prepare to Ship" reviews in the 
>>>> chromestatus entry (Privacy, WP Security, etc).
>>>>
>>>> Thanks,
>>>> Dan
>>>>
>>>> On Wednesday, August 5, 2026 at 1:46:36 PM UTC-7 Chromestatus wrote:
>>>>
>>>>> *Contact emails*
>>>>> [email protected]
>>>>>
>>>>> *Specification*
>>>>> https://fetch.spec.whatwg.org 
>>>>>
>>>>> *Summary*
>>>>> An AbortController can be passed into fetch to allow a request to be 
>>>>> aborted; this is already supported see 
>>>>> https://chromestatus.com/feature/5631483679080448 When calling abort, 
>>>>> you can optionally pass in an "abort reason", and the original fetch 
>>>>> promise if it hasn't resolved should be rejected with that reason. This 
>>>>> is 
>>>>> already working as intended. *However*, if the fetch promise *has* 
>>>>> resolved 
>>>>> (after reading the header), but the body has not yet been fully read, 
>>>>> this 
>>>>> is also intended to propagate the abort reason to the Response methods 
>>>>> such 
>>>>> as Response.blob(), as well as the ReadableStream Response.body. This 
>>>>> part 
>>>>> is not currently working; the relevant Promises instead are rejected with 
>>>>> generic AbortErrors. Firefox at least is compliant here but 
>>>>> chromium/Edge/Safari are not. 
>>>>>
>>>>> *Blink component*
>>>>> Blink>Network>FetchAPI 
>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ENetwork%3EFetchAPI%22>
>>>>>
>>>>> *Web Feature ID*
>>>>> abortable-fetch <https://webstatus.dev/features/abortable-fetch> 
>>>>>
>>>>> *Motivation*
>>>>> *No information provided* 
>>>>>
>>>>> *Initial public proposal*
>>>>> *No information provided*
>>>>>
>>>>> *TAG review*
>>>>> *No information provided* 
>>>>>
>>>>> *TAG review status*
>>>>> Not applicable
>>>>>
>>>>> *Goals for experimentation*
>>>>> None 
>>>>>
>>>>> *Risks*
>>>>>
>>>>>
>>>>> *Interoperability and Compatibility*
>>>>> *No information provided* 
>>>>>
>>>>> *Gecko*: Shipped/Shipping
>>>>>
>>>>> *WebKit*: No signal
>>>>>
>>>>> *Web developers*: No signals
>>>>>
>>>>> *Other signals*:
>>>>>
>>>>> *WebView application risks*
>>>>>
>>>>> Does this intent deprecate or change behavior of existing APIs, such 
>>>>> that it has potentially high risk for Android WebView-based applications? 
>>>>> *No information provided* 
>>>>>
>>>>>
>>>>> *Debuggability*
>>>>> *No information provided* 
>>>>>
>>>>> *Will this feature be supported on all six Blink platforms (Windows, 
>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)?*
>>>>> Yes
>>>>>
>>>>> *Is this feature fully tested by web-platform-tests 
>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
>>>>> Yes 
>>>>> https://wpt.fyi/results/fetch/api/abort/general.any.html Specifically 
>>>>> the tests: * response.arrayBuffer() rejects with abort reason if already 
>>>>> aborted (and other response methods such as body()) * Stream errors once 
>>>>> aborted with abort reason. Underlying connection closed.
>>>>>
>>>>> *Flag name on about://flags*
>>>>> *No information provided* 
>>>>>
>>>>> *Finch feature name*
>>>>> ForwardReasonToFetchBodyAbort 
>>>>>
>>>>> *Rollout plan*
>>>>> (RARE) Experiment users ramp up over time
>>>>>
>>>>> *Requires code in //chrome?*
>>>>> False
>>>>>
>>>>> *Tracking bug*
>>>>> https://issues.chromium.org/issues/502133195
>>>>>
>>>>> *Estimated milestones*
>>>>> Shipping on desktop 153 
>>>>> Shipping on Android 153 
>>>>> Shipping on WebView 153 
>>>>> Shipping on iOS 153 
>>>>>
>>>>> *Anticipated spec changes*
>>>>>
>>>>> Open questions about a feature may be a source of future web compat or 
>>>>> interop issues. Please list open issues (e.g. links to known github 
>>>>> issues 
>>>>> in the project for the feature specification) whose resolution may 
>>>>> introduce web compat/interop risk (e.g., changing to naming or structure 
>>>>> of 
>>>>> the API in a non-backward-compatible way). 
>>>>> *No information provided*
>>>>>
>>>>> *Link to entry on the Chrome Platform Status*
>>>>> https://chromestatus.com/feature/5158507786665984?gate=6176253840326656
>>>>>
>>>>> This intent message was generated by Chrome Platform Status 
>>>>> <https://chromestatus.com>. 
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7cbe2d67-6dcf-4115-a456-22eebf737674n%40chromium.org.

Reply via email to