support async function for #then