Choose currency, expiration date parsing 

I know you wanted me to push changes without asking for permission, but I need your help. I don't understand why the exception catching doesn't work in Yesod. It works outside, I've modified one test in the library to catch the MpException and fail, and the failure is correct. But in Yesod, if I create a registration in dollars, I get a MpException from Mangopay, and I should catch it and use an error page. It doesn't work: Yesod logs an Internal Server Error and seems to continue/reload the same page and gives a "no data received" error. I'm stumped. Why would the handler not work? It's probably something stupid, but I just can't see it!