/// <summary> /// Lifts an inner Task out of the OneOf. /// </summary> /// <typeparam name="TA"></typeparam> /// <typeparam name="TB"></typeparam> /// <param name="oneOf"></param> /// <returns></returns> public static async Task <OneOf <TA, TB> > LiftTask <TA, TB>(this OneOf <TA, Task <TB> > oneOf) { var isA = oneOf.Extract(x => true, x => false); if (isA) { var a = oneOf.Extract(x => x, x => throw new InvalidOperationException()); return(new OneOf <TA, TB>(a)); } var b = await oneOf.Extract(x => throw new InvalidOperationException(), x => x); return(new OneOf <TA, TB>(b)); }