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.
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
WIP: provide
resume
andtryResume
that pass the value to the callback #4090base: develop
Are you sure you want to change the base?
WIP: provide
resume
andtryResume
that pass the value to the callback #4090Changes from all commits
9d806f7
36acb39
c6eb76b
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd say we need to decide two things:
CoroutineContext
. It's not the selects performance I worry about, but the general applicability: consider I have aresume(resource, closeResourceFunIfCancelled)
. Theclose
typically can fail and the exception can either be ignored, re-thrown (then we'll handle it as part of our last-ditch mechanism) or report it to the application-specific log. Whether it needs aCoroutineContext
for that is an open question, I'm not really sure (and this decision does not block anything really)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One more: whether we want to break source compatibility in most cases or almost none of them. The latter can be achieved with
onCancellation: ((R).(cause: Throwable) -> Unit)?
and nicely supports the patterncont.resume(response) { close() }
, but it can also silently change the semantics of existing code.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bit of historical context: most likely, we haven't provided any
value
because the pattern we expected this to be used is kind of the following:Though, under closer inspection, you might notice that the same signature is used twice in different contexts and it doesn't really work