code: func (rm *responseModifier) FlushAll() error {
  	// Copy the header
  	for k, vv := range rm.header {
  		for _, v := range vv {
  			rm.rw.Header().Add(k, v)
  		}
  	}
  
  	// Copy the status code
  	// Also WriteHeader needs to be done after all the headers
  	// have been copied (above).
  	if rm.statusCode > 0 {
  		rm.rw.WriteHeader(rm.statusCode)
  	}
  
  	var err error
  	if len(rm.body) > 0 {
  		// Write body
  		var n int
  		n, err = rm.rw.Write(rm.body)
  		// TODO(@cpuguy83): there is now a relatively small buffer limit, instead of discarding our buffer here and
  		// allocating again later this should just keep using the same buffer and track the buffer position (like a bytes.Buffer with a fixed size)
  		rm.body = rm.body[n:]
  	}
  
  	// Clean previous data
  	rm.statusCode = 0
  	rm.header = http.Header{}
  	return err
  }
docs: // FlushAll flushes all data to the HTTP response