   observable sequences or Promises or array/iterable
   into one observable sequence."
   [f ob]
-  {:pre [(observable? ob) (fn? f)]}
+  {:pre [(observable? ob)]}
   (.flatMap ob f))
 
 (defn skip

  {:pre [(observable? ob) (observable? pauser)]}
  (.pausable ob pauser))



  "Filters the elements of an observable sequence
  based on a predicate."
  [f ob]
  {:pre [(observable? ob)]}
  (.filter ob (fn [x] (f x))))

(defn map
  "Apply a function to each element of an observable
  sequence."
  [f ob]
  {:pre [(observable? ob)]}
  (.map ob f))

(defn flat-map
