private void close()
        {
            lock (_sync) {
                if (_socket == null)
                {
                    return;
                }

                disposeTimer();
                disposeRequestBuffer();
                disposeStream();
                closeSocket();
            }

            _context.Unregister();
            _listener.RemoveConnection(this);
        }
        private void unregisterContext()
        {
            if (!_contextRegistered)
            {
                return;
            }

            _context.Unregister();
            _contextRegistered = false;
        }