 
     (testing "triggering"
       (trigger grandchild "event")
-      (is (= (sort ["[child] event" "[parent] event"])
-             (sort (take-all! os)))))
+      (is (matches? ["[child] event" "[parent] event"]
+                           (take-all! os))))
     (testing "shutdown"
       (shutdown parent)
       (trigger grandchild "event")

            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))))))

    (testing "downstream legs"
      (let [os (async/chan 1024)

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

; TODO: Attempt to use in core (downstream only).
; TODO: Move descriptor-related code to om-event-bus.descriptor.
; TODO: Use upstream in core.
