waitForRequestSent method
Waits until a REQ with id is sent on a connected relay.
Implementation
Future<void> waitForRequestSent(String id, Duration timeout) async {
if (globalState.relays.values.any(
(relay) => relay.isConnected && relay.stats.openRequestIds.contains(id),
)) {
return;
}
final waiter = Completer<void>();
_requestSentWaiters.putIfAbsent(id, () => {}).add(waiter);
try {
await waiter.future.timeout(
timeout,
onTimeout: () => throw TimeoutException(
'NWC response subscription was not sent',
timeout,
),
);
} finally {
final waiters = _requestSentWaiters[id];
waiters?.remove(waiter);
if (waiters != null && waiters.isEmpty) _requestSentWaiters.remove(id);
}
}