anchor.diff:        let task = t()
         task.Result |> Result.Successful
      with 
  -   | :? OperationCanceledException -> Result.Canceled
  +   | :? OperationCanceledException as e -> Result.Canceled e
      | :? AggregateException as e ->
         match e.InnerException with
  -      | :? TaskCanceledException -> Result.Canceled
  +      | :? TaskCanceledException as e -> Result.Canceled e
         | _ -> Result.Error e
      | e -> Result.Error e
   
  
positive.code: open System.Threading.Tasks
  
  type Result<'T> = 
     | Canceled   
     | Error of exn    
     | Successful of 'T
  
  
negative.code:       if not(guard()) then this.Zero() else
              this.Bind(m(), fun () -> this.While(guard, m))
  
     member this.TryWith(t, catchFn) = 
        run(t) |> function
        | Canceled ex  -> catchFn(ex)
        | Error ex     -> catchFn(ex)
        | Successful v -> returnM(v)
  
     member this.TryFinally(m, compensation) =
        try this.ReturnFrom m
        finally compensation()
  