In the latest version of this pull request
I added 
	item alias "[]" (a_header_name: READABLE_STRING_8): detachable READABLE_STRING_8 assign force
              do ... end
and 
	force (a_value: detachable READABLE_STRING_8; a_header_name: READABLE_STRING_8)
			-- Put header `a_header_name:a_value' or replace existing header of name `a_header_name'.
			--| this is used as assigner for `item'
		do 
                        ...
                end

This way, it is less easy to do this mistake

you can do for instance
   header ["Content-Type"] := "plain/text"  

it is using the "put_" semantic, i.e replace any existing header "Content-Type", which is the most common semantic.

if you need the "add_" semantic, just use the "add_..." features.

I also renamed the k and v name, to have a_header_name, a_value
which may be more explicit.

I hope this helps a bit