[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.