Refactor Client context management to avoid concurrency issue #1054
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.

According to #1051, the context manager of the Client may cause a hang in concurrent situations. This PR refactors the methods related to the Client's context manager:
__aenter__to_connect._connectto ensure that the session startup is completed within_context_lock._disconnectto ensure that the session cleanup is completed within_context_lock._ready_eventsettings in_session_runner.These changes might seem somewhat aggressive, but I believe they should make the logic of the Client's context management clearer, thereby avoiding hard-to-detect race conditions. I would like to know your thoughts on these modifications.