protected override void OnClose(TimeSpan timeout)
        {
            TimeoutHelper          timeoutHelper         = new TimeoutHelper(timeout);
            IRelayedOnewayListener relayedOnewayListener = null;

            lock (base.ThisLock)
            {
                relayedOnewayListener = this.connection;
                this.connection       = null;
            }
            if (relayedOnewayListener != null)
            {
                relayedOnewayListener.Unregister(this);
                relayedOnewayListener.Close(timeoutHelper.RemainingTime());
            }
            base.OnClose(timeoutHelper.RemainingTime());
        }