anchor.diff:  
   [source, clojure]
   ----
  -(def stream (s/choice
  -              (s/timeout 1000 :timeout)
  -              (s/timeout 900 :value)))
  -
  -(s/subscribe stream
  -             #(println "on-value:" %)
  -             #(println "on-error:" %)
  -             #(println "on-end"))
  +(def stream (rx/choice
  +              (rx/timeout 1000 :timeout)
  +              (rx/timeout 900 :value)))
  +
  +(rx/subscribe stream
  +              #(println "on-value:" %)
  +              #(println "on-error:" %)
  +              #(println "on-end"))
   
   ;; ==> on-value: :value
   ;; ==> on-end
  
positive.code: [source, clojure]
  ----
  (def stream 
    (s/create (fn [sick]
                (sick 1)
                (sick 2)
                (sick nil) ;; ends
                )))
  
  (s/on-value stream #(println "v:" %))
  ;; ==> v: 1
  ;; ==> v: 2
  ----
  
  This is implemented using protocols for make it flexible and easy extensible
  by the user. By default any object except `nil` or instance of `js/Error` are
  considered valid values; `nil` is considered as end of stream and `js/Error` or
  any instance of it is considered error termination.
  
  
  == Consuming streams
  
negative.code: 
  [source, clojure]
  ----
  (def stream (->> (rx/from-coll [1 2 3 4])
                   (rx/buffer 2)))
  
  (rx/subscribe stream
                #(println "on-value:" %)
                #(println "on-error:" %)
                #(println "on-end"))
  
  ;; ==> on-value: [1 2]
  ;; ==> on-value: [3 4]
  