A pretend single page app. Submitting the form does not reload anything — the
router calls history.pushState() and swaps the view. The listener
patches pushState, so it sees the route change and matches it against
thankYouUrl: /step=thank-you/.
—
Only pushState, replaceState and popstate are
patched. A hash router that only ever writes location.hash will not
trip this — pair thankYouUrl with a
thankYouSelector in that case.