resolución angular del enrutador ui para el estado primario

En mi estado de padre tengo unresolve. Actualmente, no inyecto elresolver clave en cualquier estado hijo.

Supuse que el estado de mi hijo no esperaría a que se resolviera esta resolución / promesa. Pero cuando establezco un tiempo de espera, puedo ver que el estado de mi hijo sí espera.

¿Es este el comportamiento correcto?

.config(function ($stateProvider, $urlRouterProvider, STATES) {
    $stateProvider
        .state(STATES.ROOT, {
            abstract: true,
            template:'<div ui-view=""></div>',
            resolve: {                  
                UserService: 'UserService',
               userDetails: function(UserService){
                   return UserService.getUserProfile();
                }

            }
        })
        .state(STATES.BILLING, {
            url: '/bill/checkClientContext.html',
           templateUrl: 'bill/checkClientContext.html',
            controller: 'BillingController'
        })

UserService.js

'use strict';
angular.module('nabc.data')
    .service('UserService', ['AjaxService', '$timeout','$q', function(AjaxService, $timeout, $q) {
        var getUserProfile = function() {
            var promise = AjaxService.get('userProfile');

            var deferred = $q.defer();
            $timeout(function(response){
                deferred.resolve(response);
            }, 5000);
            return deferred.promise;


        };

        return {
            getUserProfile: getUserProfile
        };
    }]);

Como puedes ver arribaBillingController no inyecta enuserDetails. Pero cuando configuro un tiempo de espera en el servicio de usuario, veo que mi estado de facturación sí espera.

Respuestas a la pregunta(2)

Su respuesta a la pregunta