 
         _ (info "create-alia-session*" args)
         cluster (alia/cluster cluster-args)
-        alia-session (alia/connect cluster)]
-
-    (when (not-empty init-statements)
-      (doseq [stmt init-statements]
-        (as-> stmt %
-          (str/replace % "${keyspace}" keyspace)
-          (alia/execute alia-session %))))
-
-    (alia/execute alia-session (str "USE " keyspace ";"))
-
-    alia-session))
+        alia-session (alia/connect cluster)
+
+        init-fns (for [stmt init-statements]
+                   (fn [_]
+                     (as-> stmt %
+                       (str/replace % "${keyspace}" keyspace)
+                       (alia/execute alia-session %))
+                     (return deferred-context true)))]
+
+    (with-context deferred-context
+      (mlet [_ (apply >>= (return true) init-fns)
+             _ (alia/execute alia-session (str "USE " keyspace ";"))]
+        (return alia-session)))))
 
 (defrecord AliaSession [keyspace alia-session]
   Session

    (swap! spy-log-atom conj statement)
    (execute-buffered* alia-session statement opts))
  (close [self]
    (when truncate-on-close
      (debug "truncating spy tables")
      (truncate-spy-tables self))
    (shutdown-session-and-cluster alia-session))

  KeyspaceProvider
  (keyspace [_] keyspace)

    (alia/shutdown cluster)))

(defnk ^:private create-alia-session*
  "returns a Deferred<com.datastax.driver.core/Session>"
  [contact-points
   datacenter
   keyspace
