poll method

TimeoutObservation<T> poll(
  1. BigInt now,
  2. TimeoutOperation<T> operation(),
  3. TimeoutCancellation cancellation()
)

Poll both adapters exactly once before the deadline.

Precedence is completion, unavailable operation, cancellation, pending. At or after the deadline and after any terminal result, neither adapter is invoked.

Implementation

TimeoutObservation<T> poll(
  BigInt now,
  TimeoutOperation<T> Function() operation,
  TimeoutCancellation Function() cancellation,
) {
  final immediate = _beforeAdapters(now);
  if (immediate != null) return immediate;
  final operationValue = operation();
  final cancellationValue = cancellation();
  return _settle(operationValue, cancellationValue);
}