Skip to main content
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.

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