Run a task with exclusive access to Tableau's summary-data reader.
Tableau supports only one active DataTableReader for summary data, so a
filter storm that fires several change events must not open a second one
while the first is still paginating. Tasks run in the order they were
enqueued, and a task that throws does not stall the ones behind it.
Exported so the binder shares this one queue rather than starting a second:
its pre-read clearSelectedMarksAsync has to land before the reads it is
meant to precede.
Not re-entrant. The queue is a strict serial chain, so calling this from
inside a task that is already running on it waits forever. The binder
enqueues its clear as its own task and then calls readWorksheet,
which enqueues itself — it never wraps the two together.
Run a task with exclusive access to Tableau's summary-data reader.
Tableau supports only one active
DataTableReaderfor summary data, so a filter storm that fires several change events must not open a second one while the first is still paginating. Tasks run in the order they were enqueued, and a task that throws does not stall the ones behind it.Exported so the binder shares this one queue rather than starting a second: its pre-read
clearSelectedMarksAsynchas to land before the reads it is meant to precede.Not re-entrant. The queue is a strict serial chain, so calling this from inside a task that is already running on it waits forever. The binder enqueues its clear as its own task and then calls readWorksheet, which enqueues itself — it never wraps the two together.