[beta] sync router.js

Brings in a change which prefers internal rejecting promises to
`throw`, which was causing Pause on All Exceptions to pause
on internal stuff in response to simple things like redirecting.
Note that in the case of actual errors, Pause on All Exceptions
will continue to pause on the original error that caused any
unintentional redirects, so, hooray.
Merge pull request #4272 from machty/im-syncing-in-the-brain-one-is-a-genius-the-other-insane

[beta] sync router.js