Comportamento estranho com o Promise lançando o erro "Rejeição não tratada da promessa"

Quando executo esse código usando o Node, ele lança umUnhandled promise rejection erro no console (mesmo mostrando oerror caught primeiro texto).

const promise = new Promise((resolve, reject) => setTimeout(reject, 1000))
promise.then(() => console.log('ok'))
promise.catch((e) => console.log('error caught'))

No entanto, quando eu encadeio ocatch método para othen método, o erro desaparece:

const promise = new Promise((resolve, reject) => setTimeout(reject, 1000))
promise.then(() => console.log('ok')).catch((e) => console.log('error caught'))

O primeiro código não deve lidar com a rejeição?

Também tentei o primeiro código no Chrome e ele funciona se eu abrir o inspetor quando estiver em uma nova guia (ou google.com). Se eu estiver em qualquer outra página (como stackoverflow.com), ela lança a exceção. Alguma explicação para isso? Isso parece realmente estranho para mim!