private IMessage RequestAuthenticate(IMessageEnvelope envelope)
            {
                try {
                    connector.AssertOpen();

                    var response        = Request(envelope);
                    var responseMessage = (AuthenticateResponse)response;
                    if (!responseMessage.Authenticated)
                    {
                        throw new InvalidOperationException();
                    }

                    connector.OnAuthenticated(((AuthenticateRequest)envelope.Message).UserName, responseMessage.TimeStamp);
                    return(response);
                } catch (Exception) {
                    throw;
                }
            }