optimize async invoke