;; Handlers receive an args map, return a result map
(defn send-welcome-email [args]
(let [{:keys [user-id email]} args]
(email/send! {:to email :subject "Welcome!"})
{:success? true :result {:sent-to email}}))
;; A failing handler
(defn process-payment [args]
{:success? false
:error {:message "Payment gateway unavailable" :type "GatewayError"}})