Asynchronous Programming with Clojure's core.async Library