waitNewEvent method

Future<AsyncEvent?> waitNewEvent(
  1. Duration timeout
)

Waits for a new AsyncEvent with a timeout.

Implementation

Future<AsyncEvent?> waitNewEvent(Duration timeout) {
  Future<AsyncEvent?> waitingFuture;

  var waitingNewEvents = _waitingNewEvents;

  if (waitingNewEvents != null) {
    waitingFuture = waitingNewEvents.future;
  } else {
    waitingNewEvents = _waitingNewEvents = Completer<AsyncEvent?>();

    waitingFuture = waitingNewEvents.future.then((event) {
      var prev = _waitingNewEvents;
      if (identical(prev, waitingNewEvents)) {
        _waitingNewEvents = null;
      }
      return event;
    });
  }

  return waitingFuture.timeout(timeout, onTimeout: () => null);
}