How would someone use a simple key/value pair array that is returned from this function when HTTP headers are meant to be case-insensitive? When using a simple array, you either have multiple array keys of the same name with different casing (e.g. "Foo", "foo") or you have to put something like "use the lowercase name of the header to retrieve a header from the array". I think more thought need to be put into the return value of this method in order for this method to be used consistently across different implementations.

Guzzle returns an object called `HeaderCollection` that implements `\ArrayAccess`, `\IteratorAggregate`, and `Countable`. This header collection is basically a case insensitive dictionary that returns objects implementing `HeaderInterface`. HeaderInterface is a class implements `__toString`, has a "name" property, and allows multiple headers values to be specified. When cast to a string, the header values are imploded on the header's "glue" variable.