waitNewEvent method
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);
}