handle async passing correctly in all cases.