Reject a Promise in JavaScript
The Promise.reject() function is the most concise way to
create a rejected promise that contains a given error. You
should then use .catch() to handle the error.
const p = Promise.reject(new Error('Oops!'));
return p.catch(err => {
  err.message; // 'Oops!'
});
With the Promise Constructor
When you create a promise using new, you call the Promise constructor.
The Promise constructor takes a single parameter, an executor function.
The Promise constructor then executes the executor function with 2
arguments: resolve() and reject().
function executor(resolve, reject) {
  typeof resolve; // 'function'
  typeof reject; // 'function'
}
new Promise(executor);
To reject a promise from the executor function, you should just call
reject() with an error object.
const p = new Promise((resolve, reject) => {
  reject(new Error('Oops!'));
});
return p.catch(err => {
  err.message; // 'Oops!'
});
Reject With Non-Error
You can reject a promise with any value, not just an error object.
const p = Promise.reject(42);
return p.catch(err => {
  err; // 42
});
However, many libraries and frameworks assume that promises are always
rejected with an error. So you should be careful if you choose to
call Promise.reject() with a value that isn't an error.