request method

Future<BridgeMessage> request(
  1. BridgeMessage message
)

Send a request and await a correlated response.

Implementation

Future<BridgeMessage> request(BridgeMessage message) {
  final completer = Completer<BridgeMessage>();
  _pendingRequests[message.id] = completer;

  send(message);

  // Apply timeout.
  return completer.future.timeout(
    requestTimeout,
    onTimeout: () {
      _pendingRequests.remove(message.id);
      throw TimeoutException(
        'Bridge request timed out: ${message.type.wireName}',
        requestTimeout,
      );
    },
  );
}