t() :: %Kvasir.Projection{ on_error: atom() | (... -> any()), report: (... -> any()) | nil, retry: Keyword.t() }
apply(module(), Kvasir.Event.t(), state :: term(), t()) :: :ok | {:ok, state :: term()} | :delete | {:error, atom()}