Thanks Tassilo, As you point out, if I move the nested function outside the go then the problem is fixed. This test case is only a simplification of the original code so I can't do this in my actual code however after much head scratching I now understand the purpose of take! and it addresses my issue:
test case solution: > (defn tdw2 [id t] > (let [id2 (go (<! (td id 500))) > c (chan)] > (window/setTimeout (fn [] (go (>! c (<! id2)))) t) > c > )) Required solution: > (defn tdw [id t] > (let [c (chan)] > (take! (td id 500) (fn [id2] (window/setTimeout (fn [] (go (>! c > id2))) t))) > c > )) -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.