docs: def _wait_method(self, channel_id, allowed_methods):
          """
          Wait for a method from the server destined for
          a particular channel.
  
          """
          #
          # Check the channel's deferred methods
          #
          method_queue = self.channels[channel_id].method_queue
  
          for queued_method in method_queue:
              method_sig = queued_method[0]
              if (allowed_methods is None) \
              or (method_sig in allowed_methods) \
              or (method_sig == (20, 40)):
                  method_queue.remove(queued_method)
                  return queued_method
  
          #
          # Nothing queued, need to wait for a method from the peer
          #
          while True:
              channel, method_sig, args, content = \
                  self.method_reader.read_method()
  
              if (channel == channel_id) \
              and ((allowed_methods is None) \
                  or (method_sig in allowed_methods) \
                  or (method_sig == (20, 40))):
                  return method_sig, args, content
  
              #
              # Certain methods like basic_return should be dispatched
              # immediately rather than being queued, even if they're not
              # one of the 'allowed_methods' we're looking for.
              #
              if (channel != 0) and (method_sig in Channel._IMMEDIATE_METHODS):
                  self.channels[channel].dispatch_method(method_sig, args, content)
                  continue
  
              #
              # Not the channel and/or method we were looking for.  Queue
              # this method for later
              #
              self.channels[channel].method_queue.append((method_sig, args, content))
  
              #
              # If we just queued up a method for channel 0 (the Connection
              # itself) it's probably a close method in reaction to some
              # error, so deal with it right away.
              #
              if channel == 0:
                  self.wait()