wait method

Future<NativeWriteOutcome> wait({
  1. Duration? timeout,
})

A timeout stops observation; it does not cancel queued/active writing.

Implementation

Future<NativeWriteOutcome> wait({Duration? timeout}) async {
  if (timeout != null && timeout.isNegative) {
    throw ArgumentError.value(timeout, 'timeout', 'Must not be negative');
  }
  final elapsed = Stopwatch()..start();
  while (true) {
    final state = outcome;
    if (state != NativeWriteOutcome.pending) return state;
    if (timeout != null && elapsed.elapsed >= timeout) {
      throw TimeoutException('Native write is still pending', timeout);
    }
    await Future<void>.delayed(const Duration(milliseconds: 1));
  }
}