So, I think you'll be interested by the fact that we implemented continuations in Dancer, using exceptions. I tried to do it properly , by monkey-patching Try::Tiny and have two seperate exceptions families : Dancer::Exception for when things go wrong, and Dancer::Continuation that are meant to be used only internally, to break flow control.
I decided to not use Upper::Stack and co, to stick ith simple technology. But maybe I should revisit it. Let me know what you think of the code :)
https://github.com/sukria/Dancer/blob/devel/lib/Dancer/Exception.pm