anchor.diff:  
   let async = AsyncBuilder()
   
  -[<FunJS.JSEmit("return setTimeout({0}, {1});")>]
  -let setTimeout (handler:unit -> unit, milliseconds:float) = failwith "never"
  -  
   type Async =
      static member FromContinuations(f) = protectedCont <| fun k ->
         f (k.Cont, k.Aux.ExceptionCont, k.Aux.CancelledCont)
  
positive.code: 
  type Async<'T> = Cont of (AsyncParams<'T> -> unit)
  
  let private protectedCont f = Cont (fun args ->
     args.Aux.CancellationToken.ThrowIfCancellationRequested()
     f args )
  
  let private invokeCont k value = 
     k.Cont value
  
  
negative.code:       token.Cell.Value := true
  
  type AsyncParamsAux =
     { StackCounter : int ref 
       ExceptionCont : string -> unit
       CancelledCont : string -> unit 
       CancellationToken : CancellationToken }
  
  