AngularJS “localStorage.getItem” é nulo em $ resource

Eu tenho um angular$resource para fazer login e obter informações do usuário. O logon envia o nome de usuário e a senha ao servidor e obtém um token de portador. Nosuccess função deUser.login o token é armazenado emlocalStorage. NogetEmail, Estou incluindo o token no cabeçalho no endereço de e-mail do usuário.

O problema é que, pela primeira vezgetEmail é chamado no controlador,$window.localStorage.getItem('TK') avalia comonull mas se eu atualizar a página, ela funcionará corretamente. Todas as solicitações subseqüentes ao servidor que possuem o token incluído funcionam conforme o esperado. O que poderia causar isso?

Para não mencionar,getEmail é chamado após o login e confirmei que o token está presente nolocalStorage antes de ogetEmail é chamado.

angular.module('authentication')
    .factory('User', function ($resource, $window) {
        return $resource('/login', {}, {
            login: {
                method: 'POST'
            },

            getEmail: {
                url: '/user',
                method: 'GET',
                headers: {
                    'Authorization': "Bearer " + $window.localStorage.getItem('TK')
                }
            }
        });
    })

Em resposta a @ comment: Meu controlador é assim:

angular
        .module('app.mymodule', ['ngReource', 'authentication')
        .controller('myCtrl', mymodule);

    mymodule.$inject = ['User', '$window'];

    function mymodule(User, $window) {

        // THIS PRINTS THE TK IN CONSOLE CORRECTLY
        console.log($window.localStorage.getItem("CHTOKEN"));

        // THIS IS UNAUTHORIZED CUZ TK IS NULL
        User.getEmail({}, function(data){
                console.log('set the email');
        });
    }

questionAnswers(1)

yourAnswerToTheQuestion