.catch()callback can throw a new error, but if it returns normally, than that return value is used to resolve (fulfill) the associated Promise, and the error stops propagating.
// use second callback parameter to handle errors.getJSON("/api/user/profile").then(doThisIfFulfilled, doThisIfRejected);// use .catch() (more idiomatic way)getJSON("/api/user/profile").then(displayUserProfile).catch(profileError);