anchor.diff:                      (CreateDelayAsync (fun () -> computation ie.Current)))
   
           let CreateSwitchToAsync (syncCtxt: SynchronizationContext) =
  -            CreateUserCodeAsync (fun ctxt ->
  -                ctxt.aux.trampolineHolder.Post syncCtxt ctxt.cont)
  +            CreateProtectedAsync (fun ctxt ->
  +                ctxt.aux.trampolineHolder.PostWithTrampoline syncCtxt ctxt.cont)
   
           let CreateSwitchToNewThreadAsync() =
  -            CreateUserCodeAsync (fun ctxt ->
  -                ctxt.aux.trampolineHolder.StartThread ctxt.cont)
  +            CreateProtectedAsync (fun ctxt ->
  +                ctxt.aux.trampolineHolder.StartThreadWithTrampoline ctxt.cont)
   
           let CreateSwitchToThreadPoolAsync() =
  -            CreateUserCodeAsync (fun ctxt -> 
  -                ctxt.aux.trampolineHolder.QueueWorkItem ctxt.cont)
  +            CreateProtectedAsync (fun ctxt -> 
  +                ctxt.aux.trampolineHolder.QueueWorkItemWithTrampoline ctxt.cont)
   
           let delimitSyncContext ctxt =            
               match SynchronizationContext.Current with
  
positive.code:             task
  
          // Helper to attach continuation to the given task.
          // Should be invoked as a part of CreateUserCodeAsync(withResync) call
          let taskContinueWith (task : Task<'T>) ctxt useCcontForTaskCancellation = 
  
              let continuation (completedTask: Task<_>) : unit =
                  ctxt.aux.trampolineHolder.Execute (fun () ->
                      if completedTask.IsCanceled then
                          if useCcontForTaskCancellation then
                              ctxt.OnCancellation ()
  
negative.code:                 | _ when Object.Equals(syncCtxt, currentSyncCtxt) && thread.Equals(Thread.CurrentThread) ->
                      executeImmediately ()
                  | _ -> 
                      trampolineHolder.PostOrQueueWithTrampoline syncCtxt action
  
              member __.ContinueWithPostOrQueue res =
                  trampolineHolder.PostOrQueueWithTrampoline syncCtxt (fun () -> ctxt.cont res)
  
          /// A utility type to provide a synchronization point between an asynchronous computation 
          /// and callers waiting on the result of that computation.
  