Right now we use "Map ByteString ByteString" for headers -- HashMap would be much faster. The headers type should be an opaque newtype instead.
Sure, no harm in making it opaque. On the other hand, I'd be shocked to see any measurable performance difference, given that the keys are packed, basically always less than 5 machine words long, and the table will contain at most about two dozen entries.
This is done as of 0.6.