anchor.diff:  open System.Threading.Tasks
   open Microsoft.FSharp.Control.WebExtensions
   
  -let task = Task.TaskBuilder(continuationOptions = TaskContinuationOptions.ExecuteSynchronously)
  -
   type StreamReader with
       member x.ReadToEndAsync() = 
           x.AsyncReadToEnd() |> Async.StartAsTask
  
positive.code: let filename = @"table.csv"
  
  [<Test>]
  let loadprices() =
      let started = ref false
      let dummy = ref false
      let processTask() =
  
negative.code:     Assert.True !started
  
  [<Test>]
  let ``waiting for a task``() =
      use cts = new CancellationTokenSource()
      let task = Task.TaskBuilder(cancellationToken = cts.Token)
      let t() = 
          task {
              let! v = Task.Factory.StartNew(fun () -> 0)
              return ()
          }
      cts.Cancel()
      match Task.run t with
      | Task.Canceled -> ()
      | Task.Error e -> Assert.Fail("Task should have been canceled, but errored with exception {0}", e)
      | Task.Successful a -> Assert.Fail("Task should have been canceled, but succeeded with result {0}", a)
  
  
  [<Test>]
  let ``exception in task``() =    
      let task = Task.TaskBuilder(continuationOptions = TaskContinuationOptions.ExecuteSynchronously)
      let t() = 
          task {
              failwith "error"
  