Promises fügen nichts neues hinzu, was man nicht auch schon vorher bei asynchronen Aufgaben mit Callbacks hätte lösen können.
Weiß nicht so recht. Das Neue ist die Idee, den zukünftigen erwarteten Wert als Objekt zu repräsentieren und sich daran registrieren zu können. Dieses Objekt kann man herumreichen und sich daran für den Werteempfang registrieren. Callbacks alleine sind deutlich weniger. Will man all das tun, was Promises ermöglichen, programmiert man sie letztlich nach. Dann heißen sie vielleicht Deferred, Delay, Eventual oder Future, aber der Effekt ist ähnlich :)
Wobei man aufpassen muss. Die Begriffe Promise und Future sind in der Funktionalen Programmierung nicht deckungsgleich, wenn ich die engl. Wikipedia richtig deute. Erfahrung beisteuern kann ich dazu nicht, ich bin kein Erlanger, Haskeller oder Scalist, und async/await in .net habe ich bisher nicht genutzt.
Rolf