🐛 oneshot continuation should throw the same error consistently#9
Merged
Conversation
It turns out that there was a bug with the `oneshot()` logic, where if an error was raised, then the next time, the continuation would successfully return undefined. This was not being caught because the test case was broken (It did not check that the `boom()` continuation failed, only that if it did, the message of the exception was the same, This fixes the test, and then in the event of a failure, saves the error (much in the same way that the result is saved) and then subsequent calls to this function will raise the exact same exception. We could leave it as-is, because it doesn't seem to be causing any problems, but it seems like the symmetric case of resolution and rejection should be handled the same. If the continuation caches the result, then it should also cache the exception.
neurosnap
approved these changes
Mar 10, 2023
Collaborator
neurosnap
left a comment
There was a problem hiding this comment.
We could leave it as-is, because it doesn't seem to be causing any problems, but it seems like the symmetric case of resolution and rejection should be handled the same. If the continuation caches the result, then it should also cache the exception.
I agree with this and there aren't any breaking changes, right? Seems like a pretty straight-forward improvement!
Merged
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
It turns out that there was a bug with the
oneshot()logic, where if an error was raised, then the next time, the continuation would successfully return undefined. This was not being caught because the test case was broken (It did not check that theboom()continuation failed, only that if it did, the message of the exception was the same,Approach
This fixes the test, and then in the event of a failure, saves the error (much in the same way that the result is saved) and then subsequent calls to this function will raise the exact same exception.
Alternate Designs
We could leave it as-is, because it doesn't seem to be causing any problems, but it seems like the symmetric case of resolution and rejection should be handled the same. If the continuation caches the result, then it should also cache the exception.