Значение "rej" возвращается из первого Promise в цепочке, потому что метод `catch` возвращает новый Promise, в котором результатом будет значение, возвращенное из функции `catch`.
Относительно второго вопроса, значение 2 будет выведено, потому что метод `catch` возвращает новый Promise, в котором результатом будет значение 2. При вызове функции `then` для второго промиса, оно будет передано в качестве параметра функции `onFulfilled` первого аргумента метода `then`, следовательно, оно будет выведено. Второй аргумент функции `then` срабатывает в случае возникновения ошибки, и в данном случае он не используется.