;; consumed everything
(time (println "transduce result:" (vec (take 3 (transduce (map #(do (println "transduce consumed:" %) %)) conj (take 5 (iterate #(do (Thread/sleep 500) (inc %)) 1)))))))

;; consumed needed
(time (println "lazy result:" (vec (take 3 (map #(do (println "lazy consumed:" %) %) (take 5 (iterate #(do (Thread/sleep 500) (inc %)) 1)))))))