support async require