code: func New(
  	domain string,
  	machines []string,
  	options map[string]string,
  	fatalErrorCb kvdb.FatalErrorCB,
  ) (kvdb.Kvdb, error) {
  	if len(machines) == 0 {
  		machines = defaultMachines
  	}
  
  	etcdCommon := ec.NewEtcdCommon(options)
  	tls, username, password, err := etcdCommon.GetAuthInfoFromOptions()
  	if err != nil {
  		return nil, err
  	}
  	tr, err := transport.NewTransport(tls, ec.DefaultDialTimeout)
  	if err != nil {
  		return nil, err
  	}
  	cfg := e.Config{
  		Endpoints: machines,
  		Transport: tr,
  		Username:  username,
  		Password:  password,
  		// The time required for a request to fail - 10 sec
  		HeaderTimeoutPerRequest: time.Duration(10) * time.Second,
  	}
  	c, err := e.New(cfg)
  	if err != nil {
  		return nil, err
  	}
  	if domain != "" && !strings.HasSuffix(domain, "/") {
  		domain = domain + "/"
  	}
  	return &etcdKV{
  		common.BaseKvdb{FatalCb: fatalErrorCb},
  		e.NewKeysAPI(c),
  		e.NewAuthUserAPI(c),
  		e.NewAuthRoleAPI(c),
  		domain,
  		etcdCommon,
  		kvdb.ControllerNotSupported,
  	}, nil
  }
docs: // New constructs a new kvdb.Kvdb.