A Clojure state machine using core.async channels and running in a go block