public static TryOptionAsync <A> TryOptionAsync <A>(Task <Option <A> > v) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await v.ConfigureAwait(false))));
public static TryOptionAsync <A> TryOptionAsync <A>(Func <Task <A> > f) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await f().ConfigureAwait(false))));
public static TryOptionAsync <A> TryOptionAsync <A>(Func <Task <Option <A> > > f) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await f())));
public static TryOptionAsync <A> TryOptionAsync <A>(Task <A> v) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await v)));
public static TryOptionAsync <A> TryOptionAsync <A>(Func <Option <A> > f) => TryOptionAsyncExtensions.Memo <A>(() => Task.Run(() => new OptionalResult <A>(f())));