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.