# File lib/amq/client/async/adapter.rb, line 212
        def disconnect(reply_code = 200, reply_text = "Goodbye", class_id = 0, method_id = 0, &block)
          @intentionally_closing_connection = true
          self.on_disconnection do
            @frames.clear
            block.call if block
          end

          # ruby-amqp/amqp#66, MK.
          if self.open?
            closing!
            self.send_frame(Protocol::Connection::Close.encode(reply_code, reply_text, class_id, method_id))
          elsif self.closing?
            # no-op
          else
            self.disconnection_successful
          end
        end