Without listenBefore/transitionHooks and only one active "block" it is unreal to normally prevent navigation.
Design of new history is much simpler and clearer, but why not add more than one prompt at one time or ability to overload transitionManager via options?
It is normal, if you have stackable navigation blockers. I am not asking for old async things.
And it is normal to be not just a speechless listener of history even, but have some tools to perform some actions.
You can block navigation using history.block. If you need more than one potential blocker, you can implement it yourself.