¿Cómo realizo una redirección en un interceptor angular?

Hola chicos, soy bastante nuevo en angular, y tenía una pregunta sobre la mejor manera de manejar una redirección dentro de un interceptor.

Tengo ciertas páginas en mi aplicación a las que solo debería poder acceder si tengo una cuenta seleccionada. Entonces, si no se selecciona una cuenta, quiero la ruta que el usuario vaya a la página para seleccionar la cuenta.

El siguiente es mi intento fallido:

    // within config

    $httpProvider.interceptors.push(function($q, $injector){
        return {
            'request': function(config) {
                var state = $injector.get('$state');

                if(state.is('user.list')) {
                    var accountService = $injector.get('AccountService');
                    if(!accountService.accountSelected()){

                        // cancel the current request
                        var defer = $q.defer();
                        defer.resolve();
                        config.timeout = defer.promise;

                        state.go('account.select');

                    }
                }

                return config;
            }
        }
    });

Esto está causando unBucle infinito para mi. Por alguna razón cuandostate.go se dispara y se vuelve a interceptar, el estado sigue siendo "user.list"

Nota: Estoy usando ui-router, angular 1.2.6

Otra nota: El otro lugar en el que pensé poner esto fue en un bloque state.resolve.

¡Gracias por tu ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta