# File lib/amq/client/async/exchange.rb, line 97
        def declare(passive = false, durable = false, auto_delete = false, nowait = false, arguments = nil, &block)
          # for re-declaration
          @passive     = passive
          @durable     = durable
          @auto_delete = auto_delete
          @arguments   = arguments

          @connection.send_frame(Protocol::Exchange::Declare.encode(@channel.id, @name, @type.to_s, passive, durable, auto_delete, false, nowait, arguments))

          unless nowait
            self.define_callback(:declare, &block)
            @channel.exchanges_awaiting_declare_ok.push(self)
          end

          self
        end