@Override
    public RFuture<Boolean> tryLockAsync(long threadId) {
        RFuture<Long> longRFuture = tryAcquireAsync(-1, null, threadId);
        CompletionStage<Boolean> f = longRFuture.thenApply(res -> res == null);
        return new CompletableFutureWrapper<>(f);
    }
@Test
    public void testTryLockAsync() throws InterruptedException {
        RLock lock = redisson.getSpinLock("lock");
        lock.lock();

        AtomicBoolean lockAsyncSucceed = new AtomicBoolean();
        Thread thread = new Thread(() -> {
            RFuture<Void> booleanRFuture = lock.lockAsync();
            booleanRFuture.whenComplete((res, e) -> {
                if (e != null) {
                    Assertions.fail("Lock aquire failed for some reason");
                }
                lockAsyncSucceed.set(true);
            });
        });
        thread.start();
        Thread.sleep(1_000);
        assertThat(lockAsyncSucceed.get()).isFalse();
        lock.unlock();
        Thread.sleep(200);
        assertThat(lockAsyncSucceed.get()).isTrue();
        lock.forceUnlock();
    }