'This is the same as :func:`itertools.starmap`, except that *func* is
executed in a separate green thread for each item, and results won\'t
necessarily have the same order as inputs.'

def asyncstarmap(self, func, args_iter):

    args_iter = iter(args_iter)
    for args in itertools.islice(args_iter, self.pool.size):
        self.spawn(func, *args)
    for args in args_iter:
        (yield next(self))
        self.spawn(func, *args)
    for result in self:
        (yield result)
