code: func (lock *etcd3Lock) Acquire() error {
  	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  	defer cancel()
  
  	// this is a blocking call; if we receive DeadlineExceeded
  	// the lock is most likely already taken
  	if err := lock.Mutex.Lock(ctx); err != nil {
  		if err == context.DeadlineExceeded {
  			return tusd.ErrFileLocked
  		} else {
  			return err
  		}
  	}
  	return nil
  }
docs: // Acquires a lock from etcd3