waitUntil method
Implementation
Future<void> waitUntil(bool Function(R) predicate) async {
if (predicate(_value)) return;
final completer = Completer<void>();
_waiting.add((predicate: predicate, completer: completer));
await completer.future;
}