Add more test coverage for upstream 500 responses.

Also swallow up the error if we succeeded to find the package
regardless. The client doesn't need to know about it.
Allow for returning the same error response when blocking

Little bit gross reading the whole stream into memory but it should be a small JSON error response.

Also added tests for 404s and 500s in general.