ZkController.publishAndWaitForDownStates() occurs before overseer election. That means if there is currently no overseer, there is ironically no one to actually service the down state changes it's waiting on. This particularly affects a single-node cluster such as you might run locally for development.
Additionally, we're doing an unnecessary ZkStateReader forced refresh on all Overseer operations. This isn't necessary because ZkStateReader keeps itself up to date.