Потому что then исполняется когда promise resolved (обещание выполнено)
const fn1 = () => new Promise((resolve) => {
resolve(); // сообщаем что обещание успешно выполнено
});
fn1().then(() => {
// обрабатываем результат
})
const fn2 = () => new Promise((resolve, reject) => {
reject(); // сообщаем что обещание выполнено не успешно, произошла ошибка и т.д.
});
fn2().catch(() => {
// обрабатываем ошибку
})
const fn3 = () => new Promise((resolve, reject) => {
resolve();
});
fn3().finally(() => {
// выполняется в любом случае, и при успехе и при ошибке
})