anchor.diff:              if not (ThreadPool.QueueUserWorkItem(waitCallbackForQueueWorkItemWithTrampoline, f |> box)) then
                   failwith "failed to queue user work item"
               FakeUnit
  +
  +        member this.PostOrQueue (syncCtxt : SynchronizationContext) f =
  +            match syncCtxt with 
  +            | null -> this.QueueWorkItem f 
  +            | _ -> this.Post syncCtxt f            
           
   #if FX_NO_PARAMETERIZED_THREAD_START
           // This should be the only call to Thread.Start in this library. We must always install a trampoline.
  
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:             //      a) cancellation signal should always propagate to the computation
              //      b) when the task IsCompleted -> nothing is running anymore
              let task = tcs.Task
              QueueAsync
                  token
                  (fun r -> tcs.SetResult r |> fake)
                  (fun edi -> tcs.SetException edi.SourceException |> fake)
  