code: async def process_message(self, message, wait=True):
          to_check = deque([self._waiters])
          ignored = True
          while len(to_check) > 0:
              context = to_check.popleft()
              waiters = context.get(OperationManager._LEAF, [])
              for waiter in waiters:
                  if isinstance(waiter, asyncio.Future):
                      waiter.set_result(message)
                  else:
                      try:
                          await _wait_or_launch(self._loop, waiter, message, wait)
                      except:
                          self._logger.warning("Error calling every_match callback, callback=%s, message=%s",
                                               waiter, message, exc_info=True)
                  ignored = False
              for key in context:
                  if key is OperationManager._LEAF:
                      continue
                  message_val = _get_key(message, key)
                  if message_val is _MISSING:
                      continue
                  next_level = context[key]
                  if message_val in next_level:
                      to_check.append(next_level[message_val])
          return not ignored