Better async handling. Still not quite perfect.

Async tasks seem to stack in the background, and ideally should execute
in the same amount of time regardless.