Neither Jan nor I can reproduce the issue at the heart of #784879, but it did expose a
large side-effect of a previous change I introduced: if OAuth is enabled, we don't
raise exceptions on HTTP errors. This happened automatically with rest-client, but not
when we use the OAuth library directly.
This patch causes us to raise errors as appropriate. I rescue the two most common errors
and re-raise them as RestClient exceptions instead because a large body of code checks for
those. The rest are actual problems that should bubble up.
I also removed a section in WarehouseModel that swallowed all exceptions when creating
buckets. create_bucket itself already rescues the more-specific InternalServerError
exception (because creating a bucket that already exists returns a 500), but this was
eating OAuth exceptions.
The net effect of these changes is that, if you are using OAuth (which is the default
setting), we will raise serious errors (including 403 - Forbidden, but also 500 and 404
errors in most places) as exceptions, as we do when using RestClient (which happens when
there is no OAuth signature required).
A nice little bonus is that, when I went to look at tests, they were failing, but this
patch fixed them. Woo-hoo!