code: func (resp *Response) MarshalJSON() ([]byte, error) {
  	canonicalResponse := canonicalResponse{
  		Code: resp.Code,
  		Body: resp.Body,
  	}
  	if len(resp.Headers) != 0 {
  		canonicalResponse.Headers = make(map[string]string)
  		for eachKey, eachValue := range resp.Headers {
  			canonicalResponse.Headers[strings.ToLower(eachKey)] = eachValue
  		}
  	}
  	return json.Marshal(&canonicalResponse)
  }
docs: // MarshalJSON is a custom marshaller to ensure that the marshalled
  // headers are always lowercase