   (when (or (apply f s)
             (apply f (reverse s)))
     (throw
-     (#+cljs js/Exception #+clj Exception. msg))))
+     (#+cljs js/Error #+clj Exception. msg))))
 
 (defn pair-pred [pred]
   (comp (partial every? identity)

  (if (every? sequential? [x y])
    (match (mapv counted? [x y])
           [false false] (throw
                        (#+cljs js/Exception #+clj #+cljs js/Exception #+clj Exception. "Cannot interpolate between two uncounted sequences"))
           [false _] [(take (count y) x) y]
           [_ false] [x (take (count x) y)]
           [_ _] [x y])

  #+cljs PersistentArrayMap
  (-interpolate [start end]
    (fn [t]
      (into {} (for [k (->> [start end]
                        (map keys)
                        (map set)
                        (apply union))]
