anchor.diff:  
   type Async<'T> = Cont of (AsyncParams<'T> -> unit)
   
  +[<FunJS.JSEmit("return setTimeout({0}, {1});")>]
  +let setTimeout (handler:unit -> unit, milliseconds:float) = failwith "never"
  +  
   let private protectedCont f = Cont (fun args ->
      args.Aux.CancellationToken.ThrowIfCancellationRequested()
  -   f args )
  +   incr args.Aux.StackCounter
  +   if !args.Aux.StackCounter > 1000 then // TODO: Make this a parameter (this is pretty arbitrary)
  +      args.Aux.StackCounter := 0
  +      setTimeout((fun () -> f args), 1.0)
  +   else f args )
   
  +//let private incrStack  
   let private invokeCont k value = 
      k.Cont value
   
  
positive.code:    static member StartImmediate(workflow:Async<unit>, ?cancellationToken) =
        let token = defaultArg cancellationToken { Cell = None }
        let (Cont f) = workflow
        let aux = { ExceptionCont = ignore; CancelledCont = ignore; CancellationToken = token }
        f { Cont = ignore; Aux = aux }
  
     static member Sleep(milliseconds:int) = 
  
negative.code:          named := Some (f (fun v -> 
              (!named).Value.off() |> ignore
              cont v)))
  *)
  