Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spec the finally() operator #153

Merged
merged 4 commits into from
Feb 21, 2025
Merged

Spec the finally() operator #153

merged 4 commits into from
Feb 21, 2025

Conversation

domfarolino
Copy link
Collaborator

@domfarolino domfarolino commented Jul 1, 2024

This PR specs the finally() operator, registering the callback to its internal Subscriber's teardown list.

Mirroring the finally keyword, its semantics are such that on both producer-initiated and consumer-initiated unsubscription, the finally operator's callback runs. The only remaining open question about this operator has to do with subtle timing between the finally() operator and source Observable teardown execution. See #151 for discussion there. I don't think that needs to block this PR, but it does need to resolve one way or another.

The above issues are struckthrough and obsolete; see #151 (comment).

Tests are being landed in https://chromium-review.googlesource.com/c/chromium/src/+/5654720.


Preview | Diff

chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Feb 21, 2025
See WICG/observable#153. This CL implements the
`finally()` operator. It registers a callback which runs on both
producer-initiated and consumer-initiated unsubscription. Its
implementation is relatively straightforward, just utilizing the
relevant subscriber's teardown list.

This CL used to be really complicated, as was the spec PR. This has all
been simplified since the factors that made it complicated (and broken)
have been landed. See:
 - WICG/observable#151 (comment)
 - WICG/observable#154
 - https://crrev.com/c/5676226

Now that the simplifying factors have been landed, this CL can proceed
with a simple implementation, which passes all of the tests.

[email protected]

Bug: 40282760
Change-Id: Ifff220ec094abd2187f35020eae85c1bca502f89
aarongable pushed a commit to chromium/chromium that referenced this pull request Feb 21, 2025
See WICG/observable#153. This CL implements the
`finally()` operator. It registers a callback which runs on both
producer-initiated and consumer-initiated unsubscription. Its
implementation is relatively straightforward, just utilizing the
relevant subscriber's teardown list.

This CL used to be really complicated, as was the spec PR. This has all
been simplified since the factors that made it complicated (and broken)
have been landed. See:
 - WICG/observable#151 (comment)
 - WICG/observable#154
 - https://crrev.com/c/5676226

Now that the simplifying factors have been landed, this CL can proceed
with a simple implementation, which passes all of the tests.

[email protected]

Bug: 40282760
Change-Id: Ifff220ec094abd2187f35020eae85c1bca502f89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5654720
Reviewed-by: Di Zhang <[email protected]>
Commit-Queue: Dominic Farolino <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1423349}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Feb 21, 2025
See WICG/observable#153. This CL implements the
`finally()` operator. It registers a callback which runs on both
producer-initiated and consumer-initiated unsubscription. Its
implementation is relatively straightforward, just utilizing the
relevant subscriber's teardown list.

This CL used to be really complicated, as was the spec PR. This has all
been simplified since the factors that made it complicated (and broken)
have been landed. See:
 - WICG/observable#151 (comment)
 - WICG/observable#154
 - https://crrev.com/c/5676226

Now that the simplifying factors have been landed, this CL can proceed
with a simple implementation, which passes all of the tests.

[email protected]

Bug: 40282760
Change-Id: Ifff220ec094abd2187f35020eae85c1bca502f89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5654720
Reviewed-by: Di Zhang <[email protected]>
Commit-Queue: Dominic Farolino <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1423349}
@domfarolino domfarolino merged commit 45a6cec into master Feb 21, 2025
2 checks passed
@domfarolino domfarolino deleted the finally branch February 21, 2025 21:01
github-actions bot added a commit that referenced this pull request Feb 21, 2025
SHA: 45a6cec
Reason: push, by domfarolino

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Feb 21, 2025
See WICG/observable#153. This CL implements the
`finally()` operator. It registers a callback which runs on both
producer-initiated and consumer-initiated unsubscription. Its
implementation is relatively straightforward, just utilizing the
relevant subscriber's teardown list.

This CL used to be really complicated, as was the spec PR. This has all
been simplified since the factors that made it complicated (and broken)
have been landed. See:
 - WICG/observable#151 (comment)
 - WICG/observable#154
 - https://crrev.com/c/5676226

Now that the simplifying factors have been landed, this CL can proceed
with a simple implementation, which passes all of the tests.

[email protected]

Bug: 40282760
Change-Id: Ifff220ec094abd2187f35020eae85c1bca502f89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5654720
Reviewed-by: Di Zhang <[email protected]>
Commit-Queue: Dominic Farolino <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1423349}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants