waitForResponse method

Future waitForResponse(
  1. dynamic event, {
  2. Duration? timeout,
})

Implementation

Future<dynamic> waitForResponse(dynamic event, {Duration? timeout}) {
  final completer = Completer<dynamic>();
  Timer? timer;

  void listener(dynamic data) {
    timer?.cancel();
    off(event, listener);
    if (!completer.isCompleted) {
      completer.complete(data);
    }
  }

  on(event, listener);

  if (timeout != null) {
    timer = Timer(timeout, () {
      off(event, listener);
      if (!completer.isCompleted) {
        completer.completeError(TimeoutException('Timed out waiting for $event', timeout));
      }
    });
  }

  return completer.future;
}