internal async ValueTask ProcessExchange(RabbitMQProtocolReader protocol, FrameHeader header, MethodHeader method, CancellationToken token = default)
        {
            switch (method.MethodId)
            {
            case 11:     //declare-ok
            {
                var declareOk = await protocol.ReadExchangeDeclareOkAsync(token).ConfigureAwait(false);;
                await _channelHandler.OnExchangeDeclareOkAsync(header.Channel).ConfigureAwait(false);;
                break;
            }

            case 21:     //delete-ok
            {
                var declareOk = protocol.ReadExchangeDeleteOkAsync(token).ConfigureAwait(false);;
                await _channelHandler.OnExchangeDeleteOkAsync(header.Channel).ConfigureAwait(false);;
                break;
            }

            default:
                throw new RabbitMQMethodException(nameof(ProcessExchange), method.ClassId, method.MethodId);
            }
        }