Fix dropped errors in manifold.deferred/timeout!
#248
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.
When putting the result deferred
d
in an error state, deferred returned bychain
would be detected as a dropped error because it's only used to attach a side-effecting callback for cancelling the timeout. The fix then is to useon-realized
instead to attach a handler for both cases. As a consequence, timeouts are now also properly cancelled when the result deferred is put in an error state, freeing up resources in a more timely fashion.This fixes one of the causes of clj-commons/aleph#766, as well as 2 of the 3 dropped errors in
manifold.go-off-test
.Also, add dedicated tests for
d/timeout!
.Based on #245.