anchor.diff:  type Message =
       | Increment of int
       | GetCurrent of AsyncReplyChannel<int> 
  +    | ScanNegative
  +    | LastScanned of AsyncReplyChannel<int>
  +    | GetHistory of AsyncReplyChannel<int list>
   
   [<JavaScript>]
   let Tests =
  
positive.code:             mb.Post(Increment 5)
              return! mb.PostAndAsyncReply GetCurrent     
          } @=? 6
      }
negative.code:         let mb = 
              MailboxProcessor.Start <| fun mb ->
                  let v = ref 0
                  let n = ref 0
                  let h = ref []
                  let add i =
                      h := !v :: !h
                      v := !v + i
                  let rec loop() = async {
                      let! msg = mb.Receive()
                      match msg with
                      | Increment i ->
                          add i
                      | GetCurrent chan ->
                          chan.Reply !v
                      | ScanNegative ->
                          let! j = 
                              mb.Scan (function
                                  | Increment i when i < 0 -> Some (async { n := i; return -1 })
                                  | _ -> None
                              )
                          add j
                      | LastScanned chan ->
                          chan.Reply !n
                      | GetHistory chan ->
                          chan.Reply !h
                      do! loop()
                  }
                  loop()
  