                                                                   :user/favorite-number 7}}})
                [(<! c)
                 (<! c)]))
+        (is (= [[:get-user {:user/name "nipponfarm"}]
+                [:get-user {:user/name "nipponfarm"}]
+                [:get-user {:user/name "nipponfarm"}]
+                [:get-user {:user/name "jburnford"}]
+                [:get-user {:user/name "jburnford"}]])
+            @api-calls)
         (done)))))

(deftest new-thing-works
  (async done
    (go
      (let [c (resolve {} Root '[{(:root/user {:user/name "nipponfarm"})
                               [:user/name
                                :user/favorite-color
                                :user/favorite-number
                                {:user/favorite-fellow-user [:user/favorite-color
                                                             :user/favorite-color]}]}])]
        ;; Keeps delivering the same data.
        (is (= (repeat 2 {:root/user {:user/name "nipponfarm"
                                      :user/favorite-color :color/blue

(def User
  {:user/name
   (fn [context ast]
     (doto (async/promise-chan)
       (put! {:user/name (:user/name context)})))

   :user/favorite-color
   (fn [context ast]
     (let [c (async/promise-chan)
           get-user (get-in context [:apis :get-user])]
       (get-user {:user/name (:user/name context)}
                 #(put! c %))
       c))

   :user/favorite-number
   (fn [context ast]
     (let [c (async/promise-chan)
           get-user (get-in context [:apis :get-user])]
       (get-user {:user/name (:user/name context)}
                 #(put! c %))
       c))

   :user/favorite-fellow-user
   (fn [context ast]
     (let [c (chan)
           get-user (get-in context [:apis :get-user])]
       (get-user {:user/name (:user/name context)}
                 (fn [user]
                   (-> (resolve* (assoc context :user/name (:user/favorite-fellow-user-name user))
                                 User
                                 (:key ast)
                                 (:children ast))
                       (async/pipe c))))
       c))})


(def Root
