             child (add-fork parent (fn [e] (async/put! os (str "[child] " e))) (add-info " (pass child)"))
             grandchild (add-fork child (fn [e] (async/put! os (str "[grandchild] " e))) (add-info " (pass grandchild)"))]
         (trigger bottom "event")
-        (is (= (sort ["[grandchild] event (pass parent) (pass child)"
-                      "[child] event (pass parent)"
-                      "[parent] event"])
-               (sort (take-all! os))))))
+        (is (matches? ["[grandchild] event (pass parent) (pass child)"
+                       "[child] event (pass parent)"
+                       "[parent] event"]
+                      (take-all! os)))))
 
     (testing "downstream legs"
       (let [os (async/chan 1024)

        grandchild (add-fork child (fn [e] (async/put! os (str "[grandchild] " e))))]
    (testing "triggering"
      (trigger bus "event")
      (is (= (sort ["[grandchild] event" "[child] event" "[parent] event"])
             (sort (take-all! os)))))

    (testing "shutdown"
      (shutdown child)
      (trigger bus "event")
      (is (= (sort ["[parent] event"])
             (sort (take-all! os)))))))

(deftest event-handler
  (let [parent (event-bus (upstream-router))

            grandchild (add-fork child (fn [e] (async/put! os (str "[grandchild] " e))) (add-info " (pass grandchild)"))
            top (add-leg grandchild)]
        (trigger grandchild "event")
        (is (matches? ["[child] event (pass grandchild)"
                       "[parent] event (pass grandchild) (pass child)"]
                      (take-all! os)))))

    (testing "upstream forks"
      (let [os (async/chan 1024)
