Um diesen Code wirklich zu verstehen, muss man Promises durchschauen.
Und dazu wissen, dass diese „Promises“ im Kern und also abseits des beliebten Buzzword-Usings nur so etwas wie „event-handler“ sind.
Statt eines Buttons als Objekt eben das fetch
und statt des click
eben der Eingang der Antwort vom Server (bzw. auch der Timeout).
Anders ausgedrückt, der Prozess (ein Typ im grauen Kittel) steckt eine Nachricht in die Rohrpostanlage und winkt einen weiteren Typ im grauen Kittel herbei, dem er mitteilt, was dieser zu tun hat wenn die Antwort kommt. Sobald der zweite durch Nicken anzeigt, verstanden zu haben, eilt der erste weiter und erledigt - ohne „zurückzuschauen“ - seine übrigen Aufgaben.
Wieso man das „Promise“ („Versprechen“) nennt steht in den Sternen. Es wäre eher eine „Auftragsvergabe ohne Überprüfung des Ergebnisses“, oder „Auftrag vergeben und vergessen“ also ein „Subcontracting without checking the result“ oder „Make a subcontract and forget“.