rename State to pState and implement State, which is synchronous, i.e. isn't promise-backed