async-do macro