public async Task WithAccess(Func <Task> taskFunc)
            {
                await AccessSemaphore.WaitAsync();

                try
                {
                    await taskFunc();
                }
                finally
                {
                    AccessSemaphore.Release();
                }
            }
            public async Task WithAccess(Func <MySqlConnection, Task> taskFunc)
            {
                await AccessSemaphore.WaitAsync();

                try
                {
                    using (var rentedConnection = await ConnectionPool.RentConnectionAsync())
                        await taskFunc(rentedConnection.Object);
                }
                finally
                {
                    AccessSemaphore.Release();
                }
            }