+(define-record-type <wrapped-exception>
+ (make-wrapped-exception key args stack)
+ wrapped-exception?
+ (key wrapped-exception-key)
+ (args wrapped-exception-args)
+ (stack wrapped-exception-stack))
+
+(define-syntax-rule (propagate-%async-exceptions body)
+ (let ((body-result body))
+ (display "hi!\n")
+ (if (wrapped-exception? body-result)
+ (throw '%8sync-caught-error
+ (wrapped-exception-key body-result)
+ (wrapped-exception-args body-result)
+ (wrapped-exception-stack body-result))
+ body-result)))
+