code: def wait_for(self, event, predicate, result=None):
          
  
          future = self.loop.create_future()
          entry = EventListener(event=event, predicate=predicate, result=result, future=future)
          self._dispatch_listeners.append(entry)
          return future
docs: Waits for a DISPATCH'd event that meets the predicate.
  
          Parameters
          -----------
          event: :class:`str`
              The event name in all upper case to wait for.
          predicate
              A function that takes a data parameter to check for event
              properties. The data parameter is the 'd' key in the JSON message.
          result
              A function that takes the same data parameter and executes to send
              the result to the future. If None, returns the data.
  
          Returns
          --------
          asyncio.Future
              A future to wait for.