request method
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,
);
},
);
}