fulfilled и rejected вместе называют settled. После settle состояние не меняется (immutable).
const p = newPromise((resolve, reject) => {
// пока здесь не вызвали resolve/reject — pendingresolve("ok"); // → fulfilledreject(newError("no")); // уже игнорируется
});
Связь с обработчиками
.then(onFulfilled, onRejected)
.catch(onRejected) — сахар для reject-ветки
.finally(onFinally) — и при success, и при fail
Микрозадачи: колбэки then ставятся в microtask queue после settle.
На собеседовании часто спрашивают: можно ли «перерезолвить» — нет.