def fetch_response(channel_id, method, timeout: protocol_timeout)
      methods = Array(method).map(&:to_sym)
      timeout = Float(timeout) if timeout
      fetch_response_internal(Integer(channel_id), methods, timeout)
    end
def fetch_response(channel_id, method, timeout: protocol_timeout)
      methods = Array(method).map(&:to_sym)
      timeout = Float(timeout) if timeout
      fetch_response_internal(Integer(channel_id), methods, timeout)
    end
Wait for a specific response on the given channel of the given type
 and return the event data for the response when it is received.
 Any other events received will be processed or stored internally.

 @param channel_id [Integer] The channel number to watch for.
 @param method [Symbol,Array<Symbol>] The protocol method(s) to watch for.
 @param timeout [Float] The maximum time to wait for a response in seconds;
   uses the value of {#protocol_timeout} by default.
 @raise [RabbitMQ::ServerError] if any error event is received.
 @raise [RabbitMQ::FFI::Error::Timeout] if no event is received.
 @raise [RabbitMQ::FFI::Error] if a library exception occurs.
 @return [Hash] the response data received.