This is dirty as heck. Can't we build ApiProblem objects out of normal exceptions instead of assuming everybody throws `ApiProblem`? I'd never throw `ApiProblem` in my own codebase tbh