code: func (c Client) readMessage() (irc.Message, error) {
  	if err := c.conn.SetReadDeadline(time.Now().Add(c.readTimeout)); err != nil {
  		return irc.Message{}, fmt.Errorf("unable to set deadline: %s", err)
  	}
  
  	line, err := c.rw.ReadString('\n')
  	if err != nil {
  		return irc.Message{}, err
  	}
  
  	log.Printf("client %s: read: %s", c.nick, strings.TrimRight(line, "\r\n"))
  
  	m, err := irc.ParseMessage(line)
  	if err != nil && err != irc.ErrTruncated {
  		return irc.Message{}, fmt.Errorf("unable to parse message: %s: %s", line,
  			err)
  	}
  
  	return m, nil
  }
docs: // readMessage reads a line from the connection and parses it as an IRC message.