Yup, makes sense to cancel the rendering - I can't provide a better solution on that front.
As a separate addition then, the replaceState over location.replace does provide a better experience, when available.