♻️ simplify spawn() by delegating to scope.run#1078
Merged
Conversation
We're going to end up wrapping unified APIs around most Effection functions so that they can be decorated with middleware. As such, there is no need to have separate code paths for Scope.run() and Scope.spawn() since they end up calling the same thing under the hood. This has `spawn()`` delegate to `Scope.run()` so that the apis can be unified and wrapped as one. In other words, wraping `Scope.run()` is the same as wrapping `spawn()`.
commit: |
taras
approved these changes
Jan 26, 2026
Member
taras
left a comment
There was a problem hiding this comment.
🤯 how is this is even possible?
jbolda
approved these changes
Jan 26, 2026
Member
Author
|
@taras I was actually surprised at how simple the change was. Turns out, the spawn operation is just this: let scope = yield* useScope();
return scope.run(op); |
Member
|
Isn't run also that? How are they not same? |
Member
Author
|
They both resolve to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Motivation
We're going to end up wrapping unified APIs around most Effection functions so that they can be decorated with middleware. As such, there is no need to have separate code paths for Scope.run() and Scope.spawn() since they end up calling the same thing under the hood.
Approach
This has
spawn()delegate toScope.run()so that the apis can be unified and wrapped as one. In other words, wrapingScope.run()is the same as wrappingspawn().