code: func (s *ChainService) ConnectNode(addr string, permanent bool) error {
  	replyChan := make(chan error)
  
  	select {
  	case s.query <- connectNodeMsg{
  		addr:      addr,
  		permanent: permanent,
  		reply:     replyChan,
  	}:
  		return <-replyChan
  	case <-s.quit:
  		return nil
  	}
  }
docs: // ConnectNode adds `addr' as a new outbound peer. If permanent is true then the
  // peer will be persistent and reconnect if the connection is lost.
  // It is an error to call this with an already existing peer.