Присмотримся к гипотетическому обработчику. Промис переходит в состояние fulfilled, и зарегистрированная реакция меняет надпись с Loading на Calculating, выполняет долгое синхронное вычисление, а затем заменяет надпись на Done. Легко прочитать это так, будто пользователь видит все три надписи по порядку.
У присваиваний есть порядок. Видимые кадры требуют отдельного объяснения. Реакции промисов выполняются как задания, а контрольные точки микрозадач в цикле событий HTML отличаются от возможностей для рендеринга. Обновление надписи внутри реакции не подтверждает, что Calculating уже отрисовано до начала вычисления. Как изменить структуру работы, чтобы показывать полезный прогресс, не принимая fulfilled за подтверждение отрисовки?
Теперь продолжим тот же пример. Запрос A ожидает результата. Пользователь отменяет A и запускает B. Завершение A приходит после того, как текущим стал B. Я бы хотел сохранить статус B и не позволять A заменять его на Done. Если нового запроса нет, отмена тоже должна давать понятное состояние.
Объяснение этого обработчика требует и возможности для рендеринга, и правила принятия результата.