submit method

Future<ZapReceipt> submit(
  1. MissionEnvelope mission
)

Submits mission; resolves when THIS mission's receipt arrives.

Throws immediately when the host answers with an error envelope for THIS envelope id (or an internal fault) — a rejected mission never produces a receipt, so waiting would only burn the timeout.

Implementation

Future<ZapReceipt> submit(MissionEnvelope mission) {
  final seen = _receiptWaiters[mission.missionId] ?? 0;
  _receiptWaiters[mission.missionId] = seen + 1;
  send(ZapProtocol.encodeLine(mission.toJson()));
  return _awaitReceipt(mission, seen + 1);
}