Pass agentSession directly to event emitters instead of locked field #218
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.
Basing this off the other PR so I can easily use this commit in my internal use of the library with these two fixes.
This race is a bit simpler than the other one. When calling
Disconnect()we seta.agentSessiontonil. But we also need to pass that value into the emitted event for an agent disconnect.This fixes the race by just referencing the actual object in memory instead of the field on the
agent. Since the only mutation we do to theagentSessionis adding the warnings from the initial connection anyway, this seemed reasonable enough. Plus, if we were to just wrap thea.agentSessionusage in the mutex in the event callback, it would still race and potentially benildepending on when the event gets emitted. This way, the session is always there.