'Select a worker to dispatch to, either an idle one or a new one, and
perform it.
This method should run on the coordinator worker.
@param task: the task to dispatch
@type task: 0-argument callable'

def _coordinateThisTask(self, task):

    worker = (self._idle.pop() if self._idle else self._createWorker())
    if (worker is None):
        self._pending.append(task)
        return
    self._busyCount += 1
    @worker.do
    def doWork():
        try:
            task()
        except:
            self._logException()
        @self._coordinator.do
        def idleAndPending():
            self._busyCount -= 1
            self._recycleWorker(worker)
