framework.step() support blocking