use then/catch instead of then(success,error) + improved error handling by leveraging errorCallback