I have JSON-RPC provider like this (transpiled with babel and webpack):
export default function() {
    var id = 1;
    function request(method, params) {
        return JSON.stringify({
            id: id++,
            method: method,
            params: params || []
        });
    }
    var uri;
    this.setup = function(user_uri) {
        uri = user_uri;
    };
    this.$get = ['$http', '$q', function($http, $q) {
        function rpc(method, params) {
            return $http({
                method: 'POST',
                url: uri,
                data: request(method, params)
            }).then(response => response.data);
        }
        var defer = $q.defer();
        rpc('system.describe').then(data => {
            var service = {};
            data.result.procs.forEach(spec => {
                service[spec.name] = function(...args) {
                    var defer = $q.defer();
                    if (args.length == spec.params.length) {
                        return rpc(spec.name, args).then(data => {
                            if (data.error) {
                                defer.reject(data.error);
                            } else {
                                defer.resolve(data.result);
                            }
                        });
                    } else {
                        defer.reject('Invalid arity expected ' +
                                     spec.params.length +
                                     ' got ' +
                                     args.length);
                    }
                    return defer.promise;
                };
            });
            defer.resolve(service);
        });
        return defer.promise;
    }];
};
and I call one function:
        service.login('user', 'password').then(function(token) {
            if (token) {
                localStorage.setItem('notes_token', token);
                localStorage.setItem('notes_username', 'user');
            }
            console.log('token: ' + token);
        }).catch(function(error) {
            console.log(error);
        });
the request is returning error and I got this in console:
token: undefined [err] Possibly unhandled rejection: user not active
Why I don't get console.log from catch and have then executed?
I've also tried:
        service.login('user', 'password').then(function(token) {
            if (token) {
                localStorage.setItem('notes_token', token);
                localStorage.setItem('notes_username', 'user');
            }
            console.log('token: ' + token);
        }, function(error) {
            console.log(error);
        });
and get the same results. I'm using angular 1.6.3.
 
     
    