optimize suspendOrAct