Plantilla de carga diferida y controlador en UI-Router angular

Estoy intentando cargar de forma diferida un controlador y una plantilla en mi archivo UI-Router router.js, pero tengo dificultades con la plantilla.

El controlador se carga correctamente, pero después de cargarlo, debemos cargar la plantilla y aquí es donde las cosas salen mal.

Después de que ocLazyLoad carga el controlador, resolvemos una promesa angular que también se incluye en templateProvider. El problema es en lugar de devolver la promesa (templateDeferred.promise) después de que el archivo se haya cargado, la promesa se devuelve como un objeto.

.state('log_in', {
    url: '/log-in',
    controller: 'controllerJsFile',
    templateProvider: function($q, $http) { 
      var templateDeferred = $q.defer();

        lazyDeferred.promise.then(function(templateUrl) {
        $http.get(templateUrl)
        .success(function(data, status, headers, config) {
            templateDeferred.resolve(data);
        }).
        error(function(data, status, headers, config) {
            templateDeferred.resolve(data);
        });
  });
  return templateDeferred.promise;
 },
 resolve: {
    load: function($templateCache, $ocLazyLoad, $q) {
        lazyDeferred = $q.defer();

        var lazyLoader = $ocLazyLoad.load ({
          files: ['src/controllerJsFile']
        }).then(function() {
          return lazyDeferred.resolve('src/htmlTemplateFile');
        });
        return lazyLoader;
    }
 },
 data: {
  public: true
 }
})

Respuestas a la pregunta(2)

Su respuesta a la pregunta