update async callback api, user-friendly-exception