public static AsyncTailAction <T> InterceptWith <T>(this AsyncTailAction <T> tailAction, Func <T, Task> asyncAction)
 {
     return(tailAction.InterceptWith((me, item) =>
     {
         return asyncAction(item).ContinueWith(_ => me(item)).Unwrap();
     }));
 }
 public static AsyncTailAction <T> InterceptWith <T>(this AsyncTailAction <T> tailAction, Action <T> action)
 {
     return(tailAction.InterceptWith((me, item) =>
     {
         action(item);
         return me(item);
     }));
 }