rewrite asyncrequire to use