### CI Link

https://gradle-enterprise.elastic.co/s/jw2osfn3o4ork

### Repro line

`gradlew ':x-pack:plugin:esql:internalClusterTest' --tests "org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.testCancelRead" -Dtests.seed=F9D81006206BDA07 -Dtests.locale=und -Dtests.timezone=CST -Druntime.java=20`

### Does it reproduce?

No

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

This doesn't reproduce, even though I've tried using both seeds (from inside IntelliJ) and running the test multiple times with other random seeds.

```
org.elasticsearch.xpack.esql.action.EsqlActionTaskIT > testCancelRead FAILED
    java.lang.Error: Maximum permit count exceeded
        at __randomizedtesting.SeedInfo.seed([F9D81006206BDA07:6CF5A28298786366]:0)
        at java.base/java.util.concurrent.Semaphore$Sync.tryReleaseShared(Semaphore.java:198)
        at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1146)
        at java.base/java.util.concurrent.Semaphore.release(Semaphore.java:619)
        at org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.cancelTask(EsqlActionTaskIT.java:200)
        at org.elasticsearch.xpack.esql.action.EsqlActionTaskIT.testCancelRead(EsqlActionTaskIT.java:161)
```
x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java
assertThat(task.action(), equalTo(DriverTaskRunner.ACTION_NAME));
                assertThat(task.description(), either(equalTo(READ_DESCRIPTION)).or(equalTo(MERGE_DESCRIPTION)));
                DriverStatus status = (DriverStatus) task.status();
                
                assertThat(status.status(), equalTo(DriverStatus.Status.STARTING));
            }
            foundTasks.addAll(tasks);
        });
        return foundTasks;
    }
    private void assertCancelled(ActionFuture<EsqlQueryResponse> response) throws Exception {
        Exception e = expectThrows(Exception.class, response::actionGet);
        Throwable cancelException = ExceptionsHelper.unwrap(e, TaskCancelledException.class);
        assertNotNull(cancelException);
        assertThat(cancelException.getMessage(), equalTo("test cancel"));
        assertBusy(
            () -> assertThat(
                client().admin()
                    .cluster()
                    .prepareListTasks()
                    .setActions(EsqlQueryAction.NAME, DriverTaskRunner.ACTION_NAME)
                    .setDetailed(true)
                    .get()
                    .getTasks(),
                emptyIterable()
            )
        );
    }
    private static final Semaphore scriptPermits = new Semaphore(0);
    public static class PausableFieldPlugin extends Plugin implements ScriptPlugin {