code: func (c *Conn) Close() error {
  	// Note that net.Conn.Close can be called multiple times and atomic store is
  	// idempotent so no need to ensure we only do this once.
  	//
  	// Also note that we don't wait for CopyBytes to return here since we are
  	// closing the conns which is the only externally visible sideeffect of that
  	// goroutine running and there should be no way for it to hang or leak once
  	// the conns are closed so we can save the extra coordination.
  	atomic.StoreInt32(&c.stopping, 1)
  	c.src.Close()
  	c.dst.Close()
  	return nil
  }
docs: // Close closes both connections.