 
 (defmacro do!
   "Execute potentially side effectful code and return a promise resolved
-  to the last expression. Always awaiting the result of each
+  to the last expression after awaiting the result of each
   expression."
   [& exprs]
   `(pt/-bind


(defn delay
  "Given a timeout in miliseconds and optional value, returns a promise
  that will fulfilled with provided value (or nil) after the time is
  reached."
  ([t] (delay t nil exec/default-scheduler))
  ([t v] (delay t v exec/default-scheduler))

(defmacro ->
  "Like the clojure.core/->, but it will handle promises in values
  and make sure the next form gets the value realized instead of
  the promise.
 
  Example fetching data in the browser with CLJS:

  (p/-> (js/fetch #js {...}) ; returns a promise
        .-body)
