'Replace a header.
Replace the first matching header found in the message, retaining
header order and case.  If no matching header was found, a KeyError is
raised.'

def replace_header(self, _name, _value):

    _name = _name.lower()
    for (i, (k, v)) in zip(range(len(self._headers)), self._headers):
        if (k.lower() == _name):
            self._headers[i] = (k, _value)
            break
    else:
        raise KeyError(_name)
