anchor.diff:      type AsyncReturn =
           | FakeUnit
   
  -
       type cont<'T> = ('T -> AsyncReturn)
       type econt = (ExceptionDispatchInfo -> AsyncReturn)
       type ccont = (OperationCanceledException -> AsyncReturn)
   
       [<AllowNullLiteral>]
       type Trampoline() = 
  +
  +        let unfake FakeUnit = ()
   
           [<Literal>]
           static let bindLimitBeforeHijack = 300 
  
positive.code:             | AsyncResult.Canceled exn -> raise exn
  
      module AsyncPrimitives =
          // To consider: augment with more exception traceability information
          // To consider: add the ability to suspend running ps in debug mode
          // To consider: add the ability to trace running ps in debug mode
          open System
          open System.Threading
          open System.IO
          open Microsoft.FSharp.Core
  
          let fake () = FakeUnit
          let unfake FakeUnit = ()
  
negative.code:             //
              // And so when the timeout is given we always use the current thread
              // for the cancellation and run the computation in another thread.
              | _ -> RunSynchronouslyInAnotherThread (cancellationToken, computation, timeout)
  
          let Start token computation =
              QueueAsync 
                  token
                  (fun () -> FakeUnit)   // nothing to do on success
                  (fun edi -> edi.ThrowAny())   // raise exception in child
  