     (is (started? (-> ex ex-data :component :a)))
     (is (started? (-> ex ex-data :component :b)))))
 
+#+clj
 (deftest error-thrown-with-cause
   (let [error (ex-info "Boom!" {})
         ex (setup-error error)]
-    (println error ex)
     (is (identical? error (.getCause ex)))))
 
 (defrecord System2b [one]

                       :my-c :c})
                 :e (component-e)}))

(defmacro with-log [& body]
  `(binding [*log* []]
     ~@body
     *log*))

(deftest components-start-in-order
  (let [log (with-log (component/start (system-1)))]
    (are [k1 k2] (before? log k1 k2)
         'ComponentA.start 'ComponentB.start
         'ComponentA.start 'ComponentC.start

#+cljs
(defn var [arg] arg)

#+clj
(defn- log [& args]
  (when (thread-bound? #'*log*)
    (set! *log* (conj *log* args))))

#+cljs
(defn- log [& args]
  (set! *log* (conj *log* args)))

(defn- ordering
  "Given an ordered collection of messages, returns a map from the
