It would be nice if it was possible to pass arbitrary data to a component via a data object. this.$router.go({name: '/signout', data: {message: 'Token expired'}}); Which would then be available to the component in the usual format.
With this in mind you could intercept the earlier event $locationChangeStart, check if a particular state does not exist for the location and use $http to lazy load the appropriate data / javascript / state configuration. Once resolved the $locationChangeStart continues seamlessly for ui-router ...