code: def wait(aws):
    
  
    aws_list = aws if isinstance(aws, list) else [aws]
    results = asyncio.get_event_loop().run_until_complete(asyncio.gather(
        *aws_list, return_exceptions=True))
    # If any of the cmds failed, re-raise the error.
    for result in results:
      if isinstance(result, Exception):
        raise result
    return results if isinstance(aws, list) else results[0]
docs: Waits for all of the awaitable objects (e.g. coroutines) in aws to finish.
  
    All the awaitable objects are waited for, even if one of them raises an
    exception. When one or more awaitable raises an exception, the exception from
    the awaitable with the lowest index in the aws list will be reraised.
  
    Args:
      aws: a single awaitable, or list awaitables.
  
    Returns:
      If aws is a single awaitable, its result.
      If aws is a list of awaitables, a list containing the of each awaitable in
      the list.
  
    Raises:
      Exception: if any of the awaitables raises.