AngularJS: странное поведение console.log с async chrome.storage.local.get()

Сообщите мне, если вам нужна дополнительная информация для решения этой проблемы.

Я пытаюсь получить локальные данные с помощью factory и вызывать его из контроллера.

Controller.js:

storage.getAllLocalInfo().then(function(data){
    console.log(data.distractions[0].type);
    // produces 'url'
            // console.log(data.distractions);
    // produces the following
    //  0: Object
    //      oldTxt: "youtube.com"
    //      txt: "youtube.com"
    //      type: undefined
    $scope.distractions = data.distractions;
            // This only happens when executing the line above.
    // Without that line, there is no inconsistency.
});

Как это сделать, если я попрошу вложенное свойство (type), консоль вернет правильное значение, но когда я попрошу весь объект, type возвращается как undefined. Это происходит, когда я включаю строку с $scope.distractions. И связанный factory:

var getAllLocalInfo = function() {
    var deferred = $q.defer();
    chromeStorage.get( null , function( data ) {
        if (!data) {
            deferred.reject();
        } else {
            deferred.resolve(data);
        }
    });
    return deferred.promise;
};

Может ли кто-нибудь объяснить странное поведение console.log в контроллере? Я также новичок в promises, так что это может быть то, что я испортил, хотя это также походило на то же самое при использовании обратного вызова в factory вместо обещания.