complete tasks asynchronously

otherwise it's very easy to have a bunch of connections open