Angular UI-Router - Renvoyer la promesse rejetée dans la résolution n'arrête pas la transition d'état

Je suis en train d'assurer qu'un utilisateur est authentifié avant de leur permettre de faire la transition à des états spécifiques. Si je comprends bien (après l'examen d'autres postes), un état de transition ne devrait pas se produire si l'état de résoudre retourne le refus de la promesse et de la '$stateChangeError' événement doit être soulevée. Cependant, ce n'est pas ce que je suis en train de vivre.

Marcher à travers le code suivant, je peux voir que le report de la promesse est rejetée, mais la transition de l'état persiste et '$stateChangeError " n'est pas déclenché. Dans mon module de config j'ai l'état suivant:

 .state('accounts', {
            url: '/Accounts',
            controller: 'AccountsController',
            templateUrl: 'Scripts/angular/accounts/templates/accounts.tpl.html',
            resolve: {
                authenticated: ['$q', 'AccountService', function ($q, accountService) {
                    var deferred = $q.defer();
                    accountService.userLoggedIn().then(function (loggedIn) {
                        if (loggedIn) {
                            deferred.resolve();
                        } else {
                            deferred.reject('Not logged in'); <-- This happens
                        }
                        return deferred.promise;
                    });
                }]
            }
        })

Dans le même module, dans la fonction run j'ai:

 $rootScope.$on('$stateChangeError',
    function (event, toState, toParams, fromState, fromParams, error) {
        $log.debug(error); <-- This is never called
        $state.go('login');
    });

Ce qui me manque?

source d'informationauteur Nick