Fix complicated exception handling
Two things:
- we don't need to catch and rethrow all the way up the stack - it makes it hard to read.
- I don't know why we rethrow nested exceptions everywhere - I think someone misunderstood what they were for.
This PR removes some of these issues from a single file.