anchor.diff:    /// Constructor.
     /// </summary>
     new () as this = {
  -    _async = Async.FromContinuations<'T>(fun (completed, caught, canceled) ->
  -      this._completed <- completed
  -      this._caught <- caught
  -      this._canceled <- canceled)
  +    _async = Async.FromContinuations<'T>(fun (completed, caught, _) ->
  +      lock (this) (fun _ ->
  +        match this._value, this._exn with
  +        | Some value, None -> completed value
  +        | None, Some exn -> caught exn
  +        | Some value, Some exn ->
  +          completed value
  +          caught exn
  +        | None, None -> ()
  +
  +        this._completed <- Some completed
  +        this._caught <- Some caught))
     }
   
     /// <summary>
  
positive.code:   /// Set result value and continue continuation.
    /// </summary>
    /// <param name="value">Result value</param>
    member this.SetResult value = this._completed value
  
    /// <summary>
    /// Set exception and continue continuation.
    /// </summary>
    /// <param name="exn">Exception instance</param>
    member this.SetException exn = this._caught exn
  
  ///////////////////////////////////////////////////////////////////////////////////
  
  
negative.code: 
    let locker continuation =
      let result =
        lock (_queue) (fun _ ->
          match _enter with
          | true ->
            _queue.Enqueue(continuation)
            false
          | false ->
            _enter <- true
            true)
      match result with
      | true -> continuation()
      | false -> ()
  
    let unlocker () =
      let result =
        lock (_queue) (fun _ ->
          match _queue.Count with
          | 0 ->
            _enter <- false
            None
          | _ ->
            Some (_queue.Dequeue()))
      match result with
      | Some continuation -> continuation()
      | None -> ()
  