<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 11, 2013 at 6:07 PM, Felipe Almeida Lessa <span dir="ltr"><<a href="mailto:felipe.lessa@gmail.com" target="_blank">felipe.lessa@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Thu, Jul 11, 2013 at 10:56 AM, Michael Snoyman <<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>> wrote:<br>
> The only<br>
> approach that handles the situation correctly is John's separate thread<br>
> approach (tryAll3).<br>
<br>
</div>I think you meant "tryAll2" here. Got me confused for some time =).<br>
<br>
Cheers,<br>
<br>
--<br>
Felipe.<br>
</blockquote></div><br></div><div class="gmail_extra">Doh, yes, I did, thanks for the clarification.</div><div class="gmail_extra"><br></div><div class="gmail_extra">After playing around with this a bit, I was able to get an implementation of try, catch, and handle which work for any non-async exception, in monad transformers which are instances of MonadBaseControl (from monad-control). I'll try to write up my thoughts in something more coherent, likely a blog post.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Michael</div></div>