docs: def exchange_delete(self, exchange, if_unused=False,
          nowait=False, ticket=None):
          """
          delete an exchange
  
          This method deletes an exchange.  When an exchange is deleted
          all queue bindings on the exchange are cancelled.
  
          PARAMETERS:
              exchange: shortstr
  
                  RULE:
  
                      The exchange MUST exist. Attempting to delete a
                      non-existing exchange causes a channel exception.
  
              if_unused: boolean
  
                  delete only if unused
  
                  If set, the server will only delete the exchange if it
                  has no queue bindings. If the exchange has queue
                  bindings the server does not delete it but raises a
                  channel exception instead.
  
                  RULE:
  
                      If set, the server SHOULD delete the exchange but
                      only if it has no queue bindings.
  
                  RULE:
  
                      If set, the server SHOULD raise a channel
                      exception if the exchange is in use.
  
              nowait: boolean
  
                  do not send a reply method
  
                  If set, the server will not respond to the method. The
                  client should not wait for a reply method.  If the
                  server could not complete the method it will raise a
                  channel or connection exception.
  
              ticket: short
  
                  RULE:
  
                      The client MUST provide a valid access ticket
                      giving "active" access rights to the exchange's
                      access realm.
  
          """
          args = AMQPWriter()
          if ticket is not None:
              args.write_short(ticket)
          else:
              args.write_short(self.default_ticket)
          args.write_shortstr(exchange)
          args.write_bit(if_unused)
          args.write_bit(nowait)
          self._send_method((40, 20), args)
  
          if not nowait:
              return self.wait(allowed_methods=[
                                (40, 21),    # Channel.exchange_delete_ok
                              ])