t() :: term()
deferrable?(t()) :: boolean()
run(t(), map()) :: {t(), map()}
run_once(t(), map()) :: {t(), map()}
then(t(), [{:callback, (any() -> any())}]) :: t()