sendRequest method
Implementation
Future<Content> sendRequest(String type, Map<String, dynamic> request, {Uint8List? data}) async {
_raiseIfTerminal();
if (_entered && !_connected && !_allowDisconnectedRequests) {
throw _disconnectedError(baseMessage: 'room connection is disconnected');
}
final requestId = _protocolInstance.getNextMessageId();
final pr = _PendingRequest();
_pendingRequests[requestId] = pr;
final message = packMessage(request, data);
try {
await _protocolInstance.send(type, message, id: requestId);
final response = await pr.fut;
if (response is ErrorContent) {
throw RoomServerException(response.text, code: response.code);
}
return response;
} catch (error) {
_pendingRequests.remove(requestId);
rethrow;
}
}