Intent to Implement and Ship: WritableStream controller AbortSignal

140 views
Skip to first unread message

Nidhi Jaju

unread,
Aug 31, 2021, 11:15:00 AMAug 31
to blink-dev, Yutaka Hirano, Adam Rice

Contact emails

nidh...@chromium.orgri...@chromium.orgyhi...@chromium.org

Explainer

https://github.com/whatwg/streams/blob/main/writable-stream-abort-signal-explainer.md

Specification

https://streams.spec.whatwg.org/#writablestreamdefaultcontroller-signal

Summary

The streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. This change permits an underlying sink to rapidly abort an ongoing write or close when requested by the writer.


Previously, when writer.abort() was called, a long-running write would still have to continue to completion before the stream could be aborted. With this change, the write can be aborted immediately. In addition to being exposed to streams authored in JavaScript, this facility will also be used by platform-provided streams such as WebTransport.


Blink component

Blink>Network>StreamsAPI

TAG review

Not needed as this is an incremental improvement to an existing feature.

TAG review status

Not applicable

Risks

Interoperability and Compatibility

Low risk because streams has already been standardised for a long time (since around 2014). Other browsers have implemented other parts of the standard, and they will most likely also adapt this feature as well soon.


Gecko: Positive (https://github.com/whatwg/streams/pull/1132#issuecomment-867114529) Mozilla is supportive of Streams but has not yet shipped WritableStream. It is expected that they will include this feature when they do. They have also expressed interest in implementing WebTransport, and therefore are supportive of this feature.

WebKit: No signal

Web developers: No signals

Ergonomics

A lot of design efforts have been made into making the streams API easy to use. Additionally, this feature is only a small change to the existing streams API that developers are used to. An underlying sink which doesn't observe the controller.signal will continue to have the existing behavior.



Debuggability

No special support needed.


Is this feature fully tested by web-platform-tests?

Yes

Flag name


Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1215992

Patch
https://chromium-review.googlesource.com/c/chromium/src/+/3127824

Estimated milestones

M95

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5698931422920704

This intent message was generated by Chrome Platform Status.

Yoav Weiss

unread,
Sep 1, 2021, 9:28:17 AMSep 1
to Nidhi Jaju, blink-dev, Yutaka Hirano, Adam Rice
On Tue, Aug 31, 2021 at 5:14 PM Nidhi Jaju <nidh...@chromium.org> wrote:


Specification

https://streams.spec.whatwg.org/#writablestreamdefaultcontroller-signal

Summary

The streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. This change permits an underlying sink to rapidly abort an ongoing write or close when requested by the writer.


Previously, when writer.abort() was called, a long-running write would still have to continue to completion before the stream could be aborted. With this change, the write can be aborted immediately.


Am I correct in assuming that the stream developer would have to change their code in order for that to happen, and if they won't, the current behavior won't change?
 

In addition to being exposed to streams authored in JavaScript, this facility will also be used by platform-provided streams such as WebTransport.


Blink component

Blink>Network>StreamsAPI

TAG review

Not needed as this is an incremental improvement to an existing feature.

TAG review status

Not applicable

Risks

Interoperability and Compatibility

Low risk because streams has already been standardised for a long time (since around 2014). Other browsers have implemented other parts of the standard, and they will most likely also adapt this feature as well soon.


Gecko: Positive (https://github.com/whatwg/streams/pull/1132#issuecomment-867114529) Mozilla is supportive of Streams but has not yet shipped WritableStream. It is expected that they will include this feature when they do. They have also expressed interest in implementing WebTransport, and therefore are supportive of this feature.

While such comments don't typically count as a position, combining them with https://github.com/mozilla/standards-positions/issues/167 seems reasonable, given the size of this change.
 

WebKit: No signal

Have you reached out? https://bit.ly/blink-signals
 

Web developers: No signals

Have you reached out? https://goo.gle/developer-signals
 

Ergonomics

A lot of design efforts have been made into making the streams API easy to use. Additionally, this feature is only a small change to the existing streams API that developers are used to. An underlying sink which doesn't observe the controller.signal will continue to have the existing behavior.



Debuggability

No special support needed.


Is this feature fully tested by web-platform-tests?

Yes

Flag name


Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1215992

Patch
https://chromium-review.googlesource.com/c/chromium/src/+/3127824

Estimated milestones

M95

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5698931422920704

This intent message was generated by Chrome Platform Status.

--
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 blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMZNYAP-Of819oOp4yq8vRdzx78UUCPj9YKJqx4ZwLj_YsN%3D-Q%40mail.gmail.com.

Alex Russell

unread,
Sep 1, 2021, 9:54:23 AMSep 1
to Yoav Weiss, Nidhi Jaju, blink-dev, Yutaka Hirano, Adam Rice
Incremental features often benefit from TAG guidance. I'd feel better if this intent at least cited prior TAG reviews in this area or filed an FYI (with potential for TAG to request full review).

If it was covered in a previous review of WritableStreams, that would also be good to know.

Nidhi Jaju

unread,
Sep 1, 2021, 11:23:02 PMSep 1
to Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice
On Wed, Sep 1, 2021 at 10:54 PM Alex Russell <sligh...@chromium.org> wrote:
Incremental features often benefit from TAG guidance. I'd feel better if this intent at least cited prior TAG reviews in this area or filed an FYI (with potential for TAG to request full review).

If it was covered in a previous review of WritableStreams, that would also be good to know.

This feature wasn't covered in a previous review of WritableStreams, so I have filed a new TAG review: https://github.com/w3ctag/design-reviews/issues/672
 

On Wed, Sep 1, 2021, 2:28 PM Yoav Weiss <yoav...@chromium.org> wrote:


On Tue, Aug 31, 2021 at 5:14 PM Nidhi Jaju <nidh...@chromium.org> wrote:


Specification

https://streams.spec.whatwg.org/#writablestreamdefaultcontroller-signal

Summary

The streams APIs provide ubiquitous, interoperable primitives for creating, composing, and consuming streams of data. This change permits an underlying sink to rapidly abort an ongoing write or close when requested by the writer.


Previously, when writer.abort() was called, a long-running write would still have to continue to completion before the stream could be aborted. With this change, the write can be aborted immediately.


Am I correct in assuming that the stream developer would have to change their code in order for that to happen, and if they won't, the current behavior won't change?

Yes, that's correct.

 

In addition to being exposed to streams authored in JavaScript, this facility will also be used by platform-provided streams such as WebTransport.


Blink component

Blink>Network>StreamsAPI

TAG review

Not needed as this is an incremental improvement to an existing feature.

TAG review status

Not applicable

Risks

Interoperability and Compatibility

Low risk because streams has already been standardised for a long time (since around 2014). Other browsers have implemented other parts of the standard, and they will most likely also adapt this feature as well soon.


Gecko: Positive (https://github.com/whatwg/streams/pull/1132#issuecomment-867114529) Mozilla is supportive of Streams but has not yet shipped WritableStream. It is expected that they will include this feature when they do. They have also expressed interest in implementing WebTransport, and therefore are supportive of this feature.

While such comments don't typically count as a position, combining them with https://github.com/mozilla/standards-positions/issues/167 seems reasonable, given the size of this change.
 

WebKit: No signal

Have you reached out? https://bit.ly/blink-signals

I have requested for WebKit's position here: https://lists.webkit.org/pipermail/webkit-dev/2021-September/031977.html
 
 

Web developers: No signals

Have you reached out? https://goo.gle/developer-signals

Mattias Buelens has shown positive support here: https://github.com/whatwg/streams/issues/1015#issuecomment-531188273 
 

Hopefully, this addresses your questions/concerns. Thank you!

Best regards,
Nidhi 

Yutaka Hirano

unread,
Sep 2, 2021, 12:35:13 AMSep 2
to Nidhi Jaju, Alex Russell, Yoav Weiss, blink-dev, Adam Rice
Please also note that, while we believe the mechanism can be useful for some web developers, our main motivation at this point is WebTransport (#260, #295).

Chris Harrelson

unread,
Sep 2, 2021, 3:32:46 PMSep 2
to Nidhi Jaju, Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice
That said, could you comment on issue 167 giving at least an FYI that this intent is happening?
 

Reilly Grant

unread,
Sep 2, 2021, 3:36:00 PMSep 2
to Chris Harrelson, Nidhi Jaju, Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice
The Web Serial API is also interested in this capability. See the note on the abort algorithm when initializing the WritableStream.
Reilly Grant | Software Engineer | rei...@chromium.org | Google Chrome


Nidhi Jaju

unread,
Sep 2, 2021, 9:45:04 PMSep 2
to Chris Harrelson, Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice, Reilly Grant

Nidhi Jaju

unread,
Sep 15, 2021, 10:01:29 PMSep 15
to Chris Harrelson, Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice, Reilly Grant
Hi,

Just as an update, we have received some feedback on our TAG review (https://github.com/w3ctag/design-reviews/issues/672#issuecomment-919578419), and hence we are having some discussions and deciding on next best steps accordingly.

Best regards,
Nidhi

Yoav Weiss

unread,
Oct 7, 2021, 3:40:59 AM (13 days ago) Oct 7
to blink-dev, Nidhi Jaju, Alex Russell, Yoav Weiss, blink-dev, Yutaka Hirano, Adam Rice, Reilly Grant, Chris Harrelson
After talking to Nidhi offline, we can consider this intent on hold until the feedback is addressed.

On Thursday, September 16, 2021 at 4:01:29 AM UTC+2 Nidhi Jaju wrote:
Hi,

Just as an update, we have received some feedback on our TAG review (https://github.com/w3ctag/design-reviews/issues/672#issuecomment-919578419), and hence we are having some discussions and deciding on next best steps accordingly.

Best regards,
Nidhi
On Fri, Sep 3, 2021 at 10:44 AM Nidhi Jaju <nidh...@chromium.org> wrote:
On Fri, Sep 3, 2021 at 4:35 AM Reilly Grant <rei...@chromium.org> wrote:
The Web Serial API is also interested in this capability. See the note on the abort algorithm when initializing the WritableStream.
Reilly Grant | Software Engineer | rei...@chromium.org | Google Chrome


On Thu, Sep 2, 2021 at 12:32 PM Chris Harrelson <chri...@chromium.org> wrote:
On Wed, Sep 1, 2021 at 8:22 PM Nidhi Jaju <nidh...@chromium.org> wrote:
On Wed, Sep 1, 2021 at 10:54 PM Alex Russell <sligh...@chromium.org> wrote:
Incremental features often benefit from TAG guidance. I'd feel better if this intent at least cited prior TAG reviews in this area or filed an FYI (with potential for TAG to request full review).

If it was covered in a previous review of WritableStreams, that would also be good to know.

This feature wasn't covered in a previous review of WritableStreams, so I have filed a new TAG review: https://github.com/w3ctag/design-reviews/issues/672
 
On Wed, Sep 1, 2021, 2:28 PM Yoav Weiss <yoav...@chromium.org> wrote:
On Tue, Aug 31, 2021 at 5:14 PM Nidhi Jaju <nidh...@chromium.org> wrote:
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
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 blink-dev+unsubscribe@chromium.org.

Hopefully, this addresses your questions/concerns. Thank you!

Best regards,
Nidhi 

--
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 blink-dev+unsubscribe@chromium.org.

--
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 blink-dev+unsubscribe@chromium.org.
Reply all
Reply to author
Forward
0 new messages