code: def run_until_complete(self):
          
          try:
              result = self.loop.run_until_complete(self.futures)
          except asyncio.futures.CancelledError:
              return None
          else:
              if self.ft_count == 1:
                  return result[0]
              return result
docs: Run loop until all futures are done.
  
          Schedule futures for execution and wait until all are done.
          Return value from future, or list of values if multiple
          futures had been passed to constructor or gather method.
  
          All results will be in the same order as order of futures passed to constructor.
  
          :Example:
  
          .. code-block:: python
  
              >>> async def slow():
              ...     await ultra_slow_task()
              ...     return 'ultra slow'
              ...
              >>> async def fast():
              ...     await the_fastest_task_on_earth()
              ...
              >>> with Loop(slow(), fast()) as loop:
              ...     result = loop.run_until_complete()
              ...
              >>> result
              ['ultra slow', None]
  
  
          :return: Value from future or list of values.
          :rtype: None, list, Any