🐛 Fix Presence.destroy()
race condition
#645
Merged
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.
There's currently a race condition that can throw uncaught errors when destroying both a
LocalPresence
and its parentPresence
object.If the
LocalPresence
destroys first, then - since thePresence
cached its ID before thePresence
unsubscribe - by the time thePresence
tries to destroy its children, theLocalPresence
is already gone, which throws when trying to calldestroy()
.This change adds a test for this race condition, and adds a fix, which just checks if the
LocalPresence
still exists on the parent before trying to destroy it.