                  ;; perhaps by annotating the path cells with a color.
                  [new-grid new-unvisited] (wilsons-carve-passage grid path unvisited result-chan report-partial-steps?)]
              (if (empty? new-unvisited)
-               (async/>! result-chan new-grid)
+               (do
+                 (async/>! result-chan new-grid)
+                 (async/close! result-chan))
                (recur new-grid
                       new-unvisited
                       (rand-nth new-unvisited))))))

                              (go (async/>! result-chan g)))
                            (binary-tree-step (g/begin-step g) c))
          grid (assoc grid :algorithm-name "binary-tree")]
      (async/>! result-chan (reduce step-and-report grid (g/grid-coords grid))))))

(defn sidewinder-end-run? [cell]
  (let [on-east-side? (not (:east cell))

             (async/>! result-chan grid))
    (let [[new-grid processed-run] (sidewinder-step (g/begin-step grid) coord current-run)]
      (if (empty? coords)
        (do
          (async/>! result-chan new-grid)
          (async/close! result-chan))
        (recur new-grid
               coords
               (conj processed-run (first coords)))))))
