restructure to enforce "coroutine cross pcall" issues if using wrong pcall. use setloop interface.
add setloop with customizable pcall and step method
use setloop interface