Represents the outcome of an action that may return a value of type T or throw an exception.
In the case of a successful outcome T is the declared (or inferred) return
type of the action. If T is Unit the action returned no value, but
completed successfully. T may be a nullable type if
In the case of a failed outcome T is Nothing as the action did not return normally.