helper PollUntilShutdownBy funcs for both pollers, refactor FSM to use it