Tach!
Das ist nicht seine Aufgabe, sich um die Response zu kümmern. Der soll nur die Daten holen. Sehr wohl können dabei aber Fehler auftreten.
Richtig, anstelle der Daten kann auch ein Fehler geliefert werden. Und was damit gemacht wird, ist dann sehr wohl eine Sache für das Responseobjekt, sei es den Fehlertext nur aufzunehmen.
Nö, nicht zwangsläufig. Es gibt auch Fehler, die man nicht zum Aufrufer durchzureichen gedenkt. Die Beziehung zwischen dem Fehler in diesem Dienst und der Response ist also nicht zwangsläufig gegeben.
Unter Umständen muss, je nach Fehler, auch eine weitere Ausführung des Programmes verhindert werden weil sie entweder nicht mehr sinnvoll ist oder noch größere Schäden nach sich ziehen würde -- das geht nur per Exception und wie ich grad eben schon schrieb, gibt es dafür auch in Express.js entsprechende Möglichkeiten.
Nein, das geht eben nicht per Exception, weil Exceptions in asynchron ablaufenden Teilen nicht gefangen werden können. Das was du nebenan verlinkt hast, ist der Ersatz für Exceptions und try/catch. Das wird auch nicht Exception genannt, um nicht mit den eigentlichen Exceptions verwechselt zu werden. Gängige Begriffe für die Handler bei Promises sind Success- und Failure/Error-Callback.
dedlfix.