       (.prepare session q))
     (let [^Statement built-statement (build-statement query)]
       (if *async*
-        (let [async-result (.executeAsync session built-statement)]
-          (proxy [clojure.lang.IDeref
-                  clojure.lang.IBlockingDeref] []
-            (deref
-              ([]
-                 (conv/to-clj @async-result))
-              ([time-period time-unit]
-                 (conv/to-clj (deref async-result time-period time-unit))))
-            ))
-
+        (AsyncResult. (.executeAsync session built-statement))
         (-> (.execute session built-statement)
             (conv/to-clj))
         ))))

  (build-statement [s]
    s))

(defn execute
  [^Session session query]
  (if hayt/*prepared-statement*

;; defn get-keyspace
;; defn get-keyspaces
;; defn rebuild-schema
