code: def map_async(self, func, iterable, chunksize=None, callback=None):
          
          apply_result = ApplyResult(callback=callback)
          collector = OrderedResultCollector(apply_result, as_iterator=False)
          self._create_sequences(func, iterable, chunksize, collector)
          return apply_result
docs: A variant of the map() method which returns a ApplyResult
          object.
  
          If callback is specified then it should be a callable which
          accepts a single argument. When the result becomes ready
          callback is applied to it (unless the call failed). callback
          should complete immediately since otherwise the thread which
          handles the results will get blocked.