code: func (t *Transaction) doAction(a *Action) (interface{}, error) {
  	switch a.kind {
  	case commandAction:
  		return t.conn.Do(a.name, a.args...)
  	case scriptAction:
  		return a.script.Do(t.conn, a.args...)
  	}
  	return nil, nil
  }
docs: // doAction writes a to the connection buffer and then immediately
  // flushes the buffer and reads the reply via conn.Do()