                                          (some-> (find @subs ks)
                                                  (vector)))))
                        distinct)]
-            (unsubs-fn)
+            (cancel compscribe-service xch)
             (mix-out target-mix xch)
             (vswap! subs dissoc ks))
 

  (doto (chan)
    (on-close-pipe target on-close)))


(defn compscribe
  "Asynchronously subscribes via subs-fn and unsubs-fn at one or more

  as ids and are transformed to assert a map {(id streamed-val)+} at
  key.

  Subscriptions are made at service, which has to implement IStream,
  with [endpoint id] as identifier argument.

  id is used to make an initial subscription at the root endpoint.

