Estados y ciclo de una promesa
pending -> fulfilled o rejected.
Mientras está `pending`, aún no tienes valor final. Cuando se resuelve, pasa a `fulfilled`; si falla, a `rejected`.
Tu código debe contemplar ambos caminos para no dejar errores silenciados.
const p = new Promise((resolve, reject) => {
const ok = true;
if (ok) resolve('Datos listos');
else reject(new Error('Fallo al cargar'));
});
p.then((msg) => console.log(msg)).catch((err) => console.error(err.message));