add async require support