EsAsyncTaskScheduler
Description
The async task scheduler schedules the asynchronous tasks for the constructs such as futures.
It is required to do so in such a way that it can be guaranteed that the caller scheduling the tasks can complete their work before the task begins executing.
The importance of this can be seen with futures. If the future were already executing (and perhaps finished) before the caller finished subscribing all catch: handlers, then its possible they would be missed and go unhandled..even though the caller was setting them up.
A default task scheduler is registered on startup, though one could switch this out. It can be accessed by calling EsAsyncTaskScheduler class>>default
Most users should use the class-side #scheduleAt: api which takes asynchronous zones into account.
CLASS STATE
Default: ` default scheduler
Class Methods
default
  Answer the default task schedule for async operations.

     Note: This accessor is primarily intended for internal use and most
     users should go through the #scheduleTask: api on the class side which
     takes `zones` into account.

     Answers:
        <EsAsyncTaskScheduler>
new
  Answer a new task scheduler instance.

     Answers:
        <EsAsyncTaskScheduler>
scheduleTask:
  Evaluates @aBlock asynchronously within a zone.

     Arguments:
        aBlock - <Block> async task to perform
     Raises:
        <EsAsyncScheduleTaskException>
Instance Methods
scheduleTask:
  Schedule @aBlock to run async in a coordinated
     fashion with other scheduled tasks.
     Tasks should be executed in the order in which they
     are submitted.
     A <EsAsyncScheduleTaskException> should be raised
     if the task could not be scheduled.

     Arguments:
        aBlock - <Block> async task to perform
     Raises:
        <EsAsyncScheduleTaskException>
scheduleTask:at:
  Schedule @aBlock to run async at @taskPriority
     in a coordinated fashion with other scheduled tasks.
     Tasks should be executed in the order in which they
     are submitted.
     A <EsAsyncScheduleTaskException> should be raised
     if the task could not be scheduled or the @taskPriority
     is invalid.

     Arguments:
        aBlock - <Block> async task to perform
        taskPriority - <Integer> priority to run the task at
     Raises:
        <EsAsyncScheduleTaskException>
Last modified date: 04/21/2022