code: async def await_reply(self, correlation_id, timeout=None):
          
          try:
              result = await asyncio.wait_for(
                  self._futures[correlation_id], timeout=timeout)
  
              return result
          finally:
              del self._futures[correlation_id]
docs: Wait for a reply to a given correlation id.  If a timeout is
          provided, it will raise a asyncio.TimeoutError.