Skip to main content

Documentation Index

Fetch the complete documentation index at: https://abxbus.archivebox.io/llms.txt

Use this file to discover all available pages before exploring further.

Each handler execution for an event produces one EventResult. You usually access results through event.event_results (or high-level event helper methods), but this page documents the underlying object.

Common fields

  • id: unique result id
  • status: pending | started | completed | error
  • result: handler return value (typed by event result schema/type)
  • error: captured exception/error when handler fails
  • started_at, completed_at (None/null until the handler starts/completes)
  • event_children: child events emitted from inside this handler execution
  • Handler metadata (handler_id, handler_name, handler_file_path, bus label/id/name)

Await semantics

Awaiting an EventResult resolves to handler return value or raises captured failure in Python. TypeScript and Go expose the stored result/error fields directly; Go’s Wait(...) only waits for settlement.
entry = event.event_results[some_handler_id]
value = await entry

Lifecycle

Every handler entry follows the same public lifecycle in each runtime:
  1. pending: the event has accepted the handler result slot, but the handler has not started.
  2. started: the handler callable is running.
  3. completed: the handler returned a valid value or None / null / nil.
  4. error: the handler raised, returned an invalid value, timed out, or was cancelled/aborted by completion policy.
Use event.event_results for the per-handler mapping and event_result() / eventResult() / EventResult() / event_result().await when you only need the first typed raw result value.

Serialization

payload = entry.model_dump(mode='json')
print(payload)
# {
#   "id": "0190...",
#   "status": "completed",
#   "event_id": "018f...",
#   "handler_id": "018g...",
#   "handler_name": "on_user_created",
#   "result": {"user_id": "u_123"},
#   "error": None,
#   "...": "..."
# }

restored = EventResult.model_validate(payload)