Replacing async with caller-side parallelism