1.Deadlock happened when EtpSessionNativeBase.Dispose() method was called, making the DevKit failed to dispose the session object.
2.After fixing the deadlock issue, another issue was spotted: when closing the websocket connection, the session was already disposed, so the "acquiring send lock" process throwed the exception and broke in EtpSession.CloseWebSocketAsync().