public static T Wait <T>(this ISuccessfulAwaiter <T> awaiter)
        {
            if (!awaiter.IsCompleted)
            {
                var evt = new ManualResetEventSlim();
                awaiter.OnCompleted(evt.Set);
                evt.Wait();
            }

            return(awaiter.GetResult());
        }
        public static void Wait(this ISuccessfulAwaiter awaiter)
        {
            if (!awaiter.IsCompleted)
            {
                var evt = new ManualResetEventSlim();
                awaiter.OnCompleted(evt.Set);
                evt.Wait();
            }

            awaiter.GetResult();
            return;
        }
 public void OnCompleted(Action continuation)
 {
     _awaiter.OnCompleted(continuation);
 }