public void asyncDestroy() {
        if (!(dataSource instanceof AutoCloseable)) {
            return;
        }
        ExecutorService executor = Executors.newSingleThreadExecutor();
        executor.execute(this::graceDestroy);
        executor.shutdown();
    }
@Test
    void assertAsyncDestroyWithAutoCloseableDataSource() throws SQLException {
        MockedDataSource dataSource = new MockedDataSource();
        try (Connection ignored = dataSource.getConnection()) {
            new DataSourcePoolDestroyer(dataSource).asyncDestroy();
        }
        Awaitility.await().atMost(1L, TimeUnit.SECONDS).pollInterval(10L, TimeUnit.MILLISECONDS).until(dataSource::isClosed);
        assertTrue(dataSource.isClosed());
    }