fix callback issue with async