As promessas não são apenas retornos de chamada?

Estou desenvolvendo JavaScript há alguns anos e não entendo nada sobre promessas.

Parece que tudo o que faço é mudar:

api(function(result){
    api2(function(result2){
        api3(function(result3){
             // do work
        });
    });
});

Que eu poderia usar uma biblioteca comoassíncrono de qualquer maneira, com algo como:

api().then(function(result){
     api2().then(function(result2){
          api3().then(function(result3){
               // do work
          });
     });
});

Qual é mais código e menos legível. Eu não ganhei nada aqui, de repente também não é magicamente 'plano'. Sem mencionar a necessidade de converter as coisas em promessas.

Então, qual é o grande alarido sobre promessas aqui?

questionAnswers(8)

yourAnswerToTheQuestion