 
 (defprotocol Listenable
   (add-listener [_ runnable executor]))
+
 (deftype AsyncResult [fut]
   clojure.lang.IDeref
   (deref [_]


  Listenable
  (add-listener [_ runnable executor]
    (.addListener fut runnable executor)
    )
  )

(defn execute
  [^Session session query]

  [^Cluster cluster]
  (.close cluster))

(def ^:dynamic *async* false)

(defmacro async
