      (trace "using session " (hash a#) " robin is " @robin)
      (send a# (execute ~body p#)) 
      (let [res# @p#]
-       (when (instance? Throwable res#)
-         (throw res#))
-       res#)
-     ))
+       (cond
+         (and (map? res#) (res# :object)) (throw (ExceptionInfo. "" (dissoc-in* res# [:object :environment])))
+         (instance? Throwable res#) (throw res#)
+         :else res#
+         ))))
 
 (defn navigator 
   ([] (navigator (.getRootFolder service)))

    [celestial.model :refer [hypervisor]]
    [slingshot.slingshot :refer  [throw+ try+]]
    [clojure.core.strint :refer  (<<)]
    [celestial.common :refer (import-logging)])
  (:import 
    java.net.URL

    com.vmware.vim25.mo.Task
    com.vmware.vim25.mo.VirtualMachine 
    java.lang.Throwable 
    clojure.lang.ExceptionInfo
    ))

(import-logging)
