EsFutureImpl
Description
An <EsFutureImpl> is the default implementation class for the abstract <EsFuture>
Instance State
state: <Integer> Future is complete or not
EsStateIncomplete - Initial state, waiting for a result. In this state, the field holds a single-linked list of <EsFutureListener>s listeners
EsStatePendingComplete - Pending completion. Set when completed using #asyncComplete: or #asyncCompleteError:It is an error to try to complete it again. resultOrListeners holds listeners.
EsStateChained - The future has been chained to another future. The result of that other future becomes the result of this future as well. resultOrListeners contains the source future.
EsStateValue - The future has been completed with a value result.
EsStateError - The future has been completed with a error result.
resultOrListeners: The result, list of listeners or another future. The result of the future is either a value or error.
A result is only stored when the future has completed
The listeners is a linked list of <EsFutureListener>s. Listeners are only remembered while the future is not yet complete, and it is not chained to another future
The future is another future that the future is chained to. This future is waiting for the other future to complete, and when it does, this future will complete with the same result. All listeners are forwarded to the other future
Class Methods
None
Instance Methods
catch:if:
  Handles errors emitted by this future.

     @see EsFuture>>catch:if: for a complete description
     of the specification this method implements

     Arguments:
        onError - <Block> 2-arg culled block providing the error and stackTrace
        shouldCatchError - <Block> test block to determine if catch is applicable
                                       <UndefinedObject> implicit test block [true]
     Answers:
        <EsFuture>
ensure:
  Registers an @onCompletion action to be called when this future completes.

     @see EsFuture>>ensure: for a complete description
     of the specification this method implements

    Arguments:
        onCompletion - <Block> 0-arg
    Answers:
        <EsFuture>
then:catch:
  Register handlers to be evaluated when this future completes.

     @see EsFuture>>then:catch: for a complete description
     of the specification this method implements

     Arguments:
        onValue - <Block> 0 or 1-arg injected with completed value (if any)
        onError - <Block> 0, 1 to 2-arg injected with completed error and stack trace
     Answers:
        <EsFuture>
timeout:then:
  Timeout the future computation after @aDurationOrMs has passed.

     @see EsFuture>>timeout:then: for a complete description
     of the specification this method implements

     Arguments:
        aDurationOrMs - <Duration> duration object
                                    <Integer> duration in milliseconds
        onTimeout - <Block> 0-arg block
     Answers:
        <EsFuture>
Last modified date: 04/21/2022