router.js sync - simplified transition promise chain