async macro