call method
Einen Endpunkt rufen. params kommt zur Kasse dazu; null-Werte fallen
weg, damit das Backend „nicht gesetzt" nicht als ausdrückliche Angabe
missversteht.
timeout überschreibt die Vorgabe für diesen einen Aufruf – der Abschluss
eines Belegs darf länger warten als eine Belegliste.
Fehler tragen outcome: bei ErrorOutcome.unknown nie wiederholen,
sondern nachlesen (siehe v3Post).
Implementation
Future<Map<String, dynamic>> call(
String name, {
Map<String, dynamic> params = const {},
Duration? timeout,
}) async {
final antwort = await callRaw(name, params: params, timeout: timeout);
// Fehlendes `data` ist erlaubt — nicht jeder Aufruf hat eine Nutzlast.
// Ein `data`, das da ist und **kein Objekt** ist (Array, Zahl, Text), ist
// dagegen kaputt und darf nicht als leeres Objekt durchgehen: aus dem
// wurde weiter oben ein voller Standardsatz Einstellungen, und der
// Bildschirm meldete „der Betrieb hat nichts eingestellt". Dieselbe
// Grenze wie bei den Listen: leer ist etwas anderes als kaputt.
return envelopeData(name, kassenErfolgsHuelle(name, antwort), antwort.statusCode);
}