Обещания не являются обратными вызовами, оба являются идиомами программирования, которые облегчают асинхронное программирование. Использование асинхронного / ожидаемого стиля программирования с помощью сопрограмм или генераторов, которые возвращают обещания, можно рассматривать как третью подобную идиому. Сравнение этих идиом на разных языках программирования (включая Javascript) находится здесь: https://github.com/KjellSchubert/promise-future-task