code: func (c *commandConn) kill() error {
  	var werr error
  	c.cmdMutex.Lock()
  	if c.cmdExited {
  		werr = c.cmdWaitErr
  	} else {
  		werr = killAndWait(c.cmd)
  		c.cmdWaitErr = werr
  		c.cmdExited = true
  	}
  	c.cmdMutex.Unlock()
  	if werr == nil {
  		return nil
  	}
  	wExitErr, ok := werr.(*exec.ExitError)
  	if ok {
  		if wExitErr.ProcessState.Exited() {
  			return nil
  		}
  	}
  	return errors.Wrapf(werr, "commandconn: failed to wait")
  }
docs: // kill returns nil if the command terminated, regardless to the exit status.