code: func (c *Conn) Do(commandName string, args ...interface{}) (reply interface{}, err error) {
  	if commandName == "" {
  		if err := c.Flush(); err != nil {
  			return nil, err
  		}
  
  		if len(c.replies) == 0 {
  			return nil, nil
  		}
  
  		replies := []interface{}{}
  		for _, v := range c.replies {
  			if v.err != nil {
  				return nil, v.err
  			}
  			replies = append(replies, v.reply)
  		}
  		c.replies = []replyElement{}
  		return replies, nil
  	}
  
  	if len(c.queue) != 0 || len(c.replies) != 0 {
  		if err := c.Flush(); err != nil {
  			return nil, err
  		}
  		for _, v := range c.replies {
  			if v.err != nil {
  				return nil, v.err
  			}
  		}
  		c.replies = []replyElement{}
  	}
  
  	return c.do(commandName, args...)
  }
docs: // Do looks in the registered commands (via Command function) if someone
  // matches with the given command name and arguments, if so the corresponding
  // response or error is returned. If no registered command is found an error
  // is returned