registerRequest<T> static method
register request and wait for its response
if response is error throws RpcError
else returns result of type T
if no result returns Null
Implementation
static Future<T> registerRequest<T>(RpcRequest request) async {
final completer = Completer<T>();
final killer = responseEvent.addListener((response) {
if (response.id == request.id) {
if (response.hasError) {
completer.completeError(response.error!);
} else {
completer.complete(response.result);
}
}
});
return completer.future.whenComplete(killer);
}