private async Task TerminateSequenceAsync(TimeSpan timeout)
        {
            ReliableMessagingVersion reliableMessagingVersion = Settings.ReliableMessagingVersion;

            if (reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessagingFebruary2005)
            {
                _session.CloseSession();
                Message message = WsrmUtilities.CreateTerminateMessage(Settings.MessageVersion,
                                                                       reliableMessagingVersion, _session.OutputID);
                await OnConnectionSendMessageAsync(message, timeout, MaskingMode.Handled);
            }
            else if (reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessaging11)
            {
                CreateTerminateRequestor();
                Message terminateReply = await _terminateRequestor.RequestAsync(timeout);

                if (terminateReply != null)
                {
                    ProcessCloseOrTerminateReply(false, terminateReply);
                }
            }
            else
            {
                throw Fx.AssertAndThrow("Reliable messaging version not supported.");
            }
        }
        private async Task CloseSequenceAsync(TimeSpan timeout)
        {
            CreateCloseRequestor();
            Message closeReply = await _closeRequestor.RequestAsync(timeout);

            ProcessCloseOrTerminateReply(true, closeReply);
        }