'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.'

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
