Почему возвращается rej из первого promise в цепочке?

В JavaScript, при использовании Promises, каждый Promise может либо успешно выполниться (в этом случае возвращается значение), либо завершиться с ошибкой (в этом случае возвращается отклонение).

В вашем случае, если первый Promise в цепочке отклоняется и возвращает "rej", это означает, что внутри этого Promise произошла ошибка. Это может произойти, например, если произошла необработанная исключительная ситуация во время выполнения асинхронной операции или если возвращенное значение из предыдущего Promise не соответствует ожидаемому типу.

Затем, если вы обрабатываете эту ошибку, вы можете использовать метод .catch() или .then() с двумя аргументами в вашей цепочке Promises, чтобы перехватывать и обрабатывать отклонения. Например:

promise1()
  .then(response => {
    // Делать что-то со значением response
    return promise2(response);
  })
  .then(data => {
    // Делать что-то с полученными данными
  })
  .catch(error => {
    // Обработать ошибку
    console.error(error);
  });

В этом примере, если первый Promise (promise1) отклоняется, то вместо вызова следующего .then(), у нас будет вызван .catch(), который будет обрабатывать ошибку.