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>(Task <Option <A> > v) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await v.ConfigureAwait(false))));
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 <Task <Option <A> > > f) => TryOptionAsyncExtensions.Memo(new TryOptionAsync <A>(async() => new OptionalResult <A>(await f())));
public TryOptionAsync <Unit> AddAccountEvent(AccountEvent accountEvent) => TryOptionAsyncExtensions.RetryBackOff( TryOptionAsync(() => _eventDb.InsertOneAsync(accountEvent).ToUnit()), 100, 5);
public TryOptionAsync <AccountState> GetAccountState(Guid id) => TryOptionAsyncExtensions.RetryBackOff( TryOptionAsync(() => _stateDb.FindAsync(a => a.AccountId == id)), 100);
public static TryOptionAsync <A> TryOptionAsync <A>(Func <Option <A> > f) => TryOptionAsyncExtensions.Memo <A>(() => Task.Run(() => new OptionalResult <A>(f())));