code: def map(func, *iterables, **kwargs):
      
      # TODO: Handle timeout
      futures = _mapFuture(func, *iterables)
      return _mapGenerator(futures)
docs: map(func, *iterables)
      Equivalent to
      `map(func, \*iterables, ...)
      <http://docs.python.org/library/functions.html#map>`_
      but *func* is executed asynchronously
      and several calls to func may be made concurrently. This non-blocking call
      returns an iterator which raises a TimeoutError if *__next__()* is called
      and the result isn't available after timeout seconds from the original call
      to *map()*. If timeout is not specified or None then there is no limit to
      the wait time. If a call raises an exception then that exception will be
      raised when its value is retrieved from the iterator.
  
      :param func: Any picklable callable object (function or class object with
          *__call__* method); this object will be called to execute the Futures.
          The callable must return a value.
      :param iterables: Iterable objects; each will be zipped to form an iterable
          of arguments tuples that will be passed to the callable object as a
          separate Future.
      :param timeout: The maximum number of seconds to wait. If None, then there
          is no limit on the wait time.
  
      :returns: A generator of map results, each corresponding to one map
          iteration.