private void OnConnectionSucceeded(ExpandoObject data)
        {
            Debug.Log($"[SingleRequestClient] ({mRequestData?.SafeGetString("messageType")}) Connection succeeded");

            mClient.MessageReceived += OnResponse;
            mClient.SendRequest(mRequestData);
        }
        public virtual void Request(Action <ExpandoObject> callback = null)
        {
            if (mClient == null || !mClient.Connected)
            {
                if (callback != null)
                {
                    callback.Invoke(new ExpandoObject()
                    {
                        { "errorCode", ERROR_NO_CONNECTION }
                    });
                }
                return;
            }

            if (!mClient.LoggedIn)
            {
                if (callback != null)
                {
                    callback.Invoke(new ExpandoObject()
                    {
                        { "errorCode", ERROR_NOT_LOGGED_IN }
                    });
                }
                return;
            }

            if (string.IsNullOrEmpty(mMessageType))
            {
                mMessageType = Data?.SafeGetString("messageType");
            }

            if (string.IsNullOrEmpty(mMessageType))
            {
                if (callback != null)
                {
                    callback.Invoke(new ExpandoObject()
                    {
                        { "errorCode", ERROR_INVALIND_DATA }
                    });
                }
                return;
            }

            mCallback = callback;
            if (mCallback != null)
            {
                mClient.ConnectionLost  += OnConnectionLost;
                mClient.MessageReceived += OnMessageReceived;
            }
            mRequestId = mClient.SendRequest(mMessageType, Data);
        }