improve hub_coroutine, multi-yield supported