Callbacks in class must be promises #20
Draft
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.
@nytamin you are going to love this 'fun' case that I've spent quite a few hours today digging into today.
Essentially, as it is right now, any callback passed into a ThreadedClass gets slightly mangled, so that it returns a promise.
If the class does not define in its interface that the callback should return a promise, this will lead to weird type issues, as it will be getting a promise anyway. eg testcase
class normal-callback
gets back a value of"[object Promise]5"
instead of the expected15
.This becomes quite a problem when the class is an EventEmitter, as it means that when the the parent does an
.on
on the threadedClass, if it throws an error in the callback provided to.on
, then that error gets lost as an UnhandledPromiseRejection.The expected behaviour here is for the error to get bubbled back to the emit.
I'm not sure how a solution to this will work. Somehow the callbacks passed in need to block the thread execution (fibers?)