code: func (w *settingsAckSwallowWriter) Write(p []byte) (int, error) {
  	if !w.didSwallow {
  		w.buf = append(w.buf, p...)
  		// Process all the frames we have collected into w.buf
  		for {
  			// Append until we get full frame header which is 9 bytes
  			if len(w.buf) < 9 {
  				break
  			}
  			// Check if we have collected a whole frame.
  			fh, err := http2.ReadFrameHeader(bytes.NewBuffer(w.buf))
  			if err != nil {
  				// Corrupted frame, fail current Write
  				return 0, err
  			}
  			fSize := fh.Length + 9
  			if uint32(len(w.buf)) < fSize {
  				// Have not collected whole frame. Stop processing buf, and withhold on
  				// forward bytes to w.Writer until we get the full frame.
  				break
  			}
  
  			// We have now collected a whole frame.
  			if fh.Type == http2.FrameSettings && fh.Flags.Has(http2.FlagSettingsAck) {
  				// If Settings ACK frame, do not forward to underlying writer, remove
  				// bytes from w.buf, and record that we have swallowed Settings Ack
  				// frame.
  				w.didSwallow = true
  				w.buf = w.buf[fSize:]
  				continue
  			}
  
  			// Not settings ack frame. Forward bytes to w.Writer.
  			if _, err := w.Writer.Write(w.buf[:fSize]); err != nil {
  				// Couldn't forward bytes. Fail current Write.
  				return 0, err
  			}
  			w.buf = w.buf[fSize:]
  		}
  		return len(p), nil
  	}
  	return w.Writer.Write(p)
  }
docs: // Write implements io.Writer interface. Normally forwards bytes to w.Writer,
  // except for the first Settings ACK frame that it sees.