Don't wrap a call to _fetch_list() in an eval{} in order to be able to catch errors later on in a single place
In the abstract controller "MC_REST_SimpleObject", add action "end()" which will check if the requested action has died, and if so, will report an error message in JSON
Make Nginx *not* intercept the backend errors
Exit an action chain when there is an error raised in any action (thus terminating the chain early) - http://search.cpan.org/~jjnapiork/Catalyst-Runtime-5.90061/lib/Catalyst.pm#CONFIGURATION
Make API action roles report their errors via Catalyst's native means so that "sub end()" can later catch them
Don't change the HTTP status code if it's already set (by, say, an action role)
Refactor API logging / throttling / authenticating action roles from Moose's "before" / "after" into "around" so that they can die() in unexpected locations and the error will still be handled correctly
Remove debugging message
Fix exempt role checking by comparing roles as strings
Remove overly verbose debugging messages