code: def gather(self, futures, consume_exceptions=True):
          
  
          # from the asyncio docs: "If return_exceptions is True, exceptions
          # in the tasks are treated the same as successful results, and
          # gathered in the result list; otherwise, the first raised
          # exception will be immediately propagated to the returned
          # future."
          return asyncio.gather(*futures, return_exceptions=consume_exceptions)
docs: This returns a Future that waits for all the Futures in the list
          ``futures``
  
          :param futures: a list of Futures (or coroutines?)
  
          :param consume_exceptions: if True, any errors are eaten and
          returned in the result list.