refinement of async and a test