То есть по сути промис это класс, который будет принимать функцию.
Затем вызывать ее через try catch
В случае ошибки вызывать reject
Если отработало верно -> resolve(...args) которая вернёт this
Тем самым все это чейнится к .then
А then - фабрика промисов. Создаст ещё один промис где телом будет функция над которой замкнется предыдущий ей resolve.