add error handler
add iterator / generator / async function