code: func New(cli *clientv3.Client, key string, ttl int) (*Mutex, error) {
  	if key == "" {
  		return nil, types.ErrKeyIsEmpty
  	}
  
  	if !strings.HasPrefix(key, "/") {
  		key = fmt.Sprintf("/%s", key)
  	}
  
  	session, err := concurrency.NewSession(cli, concurrency.WithTTL(ttl))
  	if err != nil {
  		return nil, err
  	}
  
  	mutex := &Mutex{mutex: concurrency.NewMutex(session, key), session: session}
  	mutex.timeout = time.Duration(ttl) * time.Second
  	return mutex, nil
  }
docs: // New new a lock