private void Enqueue(Message message)
            {
                lock (_gate)
                {
                    message.Seq = ++_seq;
                    var token = ProtocolMessage.ToToken(message);
                    _trace.Add(new Event(++_order, token, true));
                    _queue.Enqueue(token);
                }

                _count.Release();
            }
 private async Task SendAsync(Message message, CancellationToken cancellationToken)
 {
     var token = ProtocolMessage.ToToken(message);
     await _transport.SendAsync(token, cancellationToken).ConfigureAwait(false);
 }