code: func forwardResponse(w http.ResponseWriter, response *http.Response) error {
  	w.Header().Del("Server") // remove Server: Caddy, append via instead
  	w.Header().Add("Via", strconv.Itoa(response.ProtoMajor)+"."+strconv.Itoa(response.ProtoMinor)+" caddy")
  
  	for header, values := range response.Header {
  		for _, val := range values {
  			w.Header().Add(header, val)
  		}
  	}
  	removeHopByHop(w.Header())
  	w.WriteHeader(response.StatusCode)
  	buf := bufferPool.Get().([]byte)
  	buf = buf[0:cap(buf)]
  	_, err := io.CopyBuffer(w, response.Body, buf)
  	response.Body.Close()
  	return err
  }
docs: // Removes hop-by-hop headers, and writes response into ResponseWriter.