Expose and return distinct a error type.

This allows the calling code to make informed decisions when handling
errors from S3.