code: func (c Client) writeMessage(m irc.Message) error {
  	buf, err := m.Encode()
  	if err != nil && err != irc.ErrTruncated {
  		return fmt.Errorf("unable to encode message: %s", err)
  	}
  
  	if err := c.conn.SetWriteDeadline(time.Now().Add(
  		c.writeTimeout)); err != nil {
  		return fmt.Errorf("unable to set deadline: %s", err)
  	}
  
  	sz, err := c.rw.WriteString(buf)
  	if err != nil {
  		return err
  	}
  
  	if sz != len(buf) {
  		return fmt.Errorf("short write")
  	}
  
  	if err := c.rw.Flush(); err != nil {
  		return fmt.Errorf("flush error: %s", err)
  	}
  
  	log.Printf("client %s: sent: %s", c.nick, strings.TrimRight(buf, "\r\n"))
  	return nil
  }
docs: // writeMessage writes an IRC message to the connection.