Result<T> and a Option<T> types into 1 class UnionContainer type currently supports 4 main states that it can exist in, those are Empty, Result, Error and Exception. It also can support container creation for between 1 and 16 possible result types. A very basic example would be this HttpClient executes a get request and then returns the containers result as the return value of the task. This introduces a few important features. The first being the automatic wrapping of a method in a try-catch, when client.GetAsync fails to connect it will throw an exception, the MethodToContainer call will see that and save the Exception so it can retrieved later. If the result works however the exception state stays false and instead the result item is populated. An optional value can also provided to TryGetValue that it will return back if your result item isn't present or is null. 