code: func (conn *Conn) Close() error {
  	conn.outLck.Lock()
  	close(conn.out)
  	conn.closed = true
  	conn.outLck.Unlock()
  	conn.signalsLck.Lock()
  	for _, ch := range conn.signals {
  		close(ch)
  	}
  	conn.signalsLck.Unlock()
  	conn.eavesdroppedLck.Lock()
  	if conn.eavesdropped != nil {
  		close(conn.eavesdropped)
  	}
  	conn.eavesdroppedLck.Unlock()
  	return conn.transport.Close()
  }
docs: // Close closes the connection. Any blocked operations will return with errors
  // and the channels passed to Eavesdrop and Signal are closed. This method must
  // not be called on shared connections.