# File lib/bunny/queue08.rb, line 371
    def unbind(exchange, opts = {})
      exchange = exchange.respond_to?(:name) ? exchange.name : exchange

      # ignore the :nowait option if passed, otherwise program will hang waiting for a
      # response that will not be sent by the server
      opts.delete(:nowait)

      opts = {
        :queue => name,
        :exchange => exchange,
        :routing_key => opts.delete(:key),
        :nowait => false
      }.merge(opts)

      client.send_frame(Qrack::Protocol::Queue::Unbind.new(opts))

      method = client.next_method

      client.check_response(method, Qrack::Protocol::Queue::UnbindOk, "Error unbinding queue #{name}")

      # return message
      :unbind_ok
    end