private async Task ProcessRequestUpdates(JObject response, int rid) { var request = RequestManager.GetRequest(rid); switch (request) { case ListRequest _: var listRequest = (ListRequest)request; var name = listRequest.Path.Split('/').Last(); var node = new RemoteNode(name, null, listRequest.Path); node.FromSerialized(response["updates"].Value <JArray>()); await Task.Run(() => listRequest.Callback(new ListResponse(_link, rid, listRequest.Path, node))); break; case SetRequest _: RequestManager.StopRequest(rid); break; case RemoveRequest _: RequestManager.StopRequest(rid); break; case InvokeRequest _: var invokeRequest = (InvokeRequest)request; var path = invokeRequest.Path; var columns = response.GetValue("columns") != null ? response["columns"].Value <JArray>() : new JArray(); var updates = response.GetValue("updates") != null ? response["updates"].Value <JArray>() : new JArray(); var meta = response.GetValue("meta") != null ? response["meta"].Value <JObject>() : new JObject(); var error = response.GetValue("error") != null ? response["error"].Value <JObject>() : new JObject(); await Task.Run(() => { invokeRequest?.Callback(new InvokeResponse(_link, rid, path, columns, updates, meta, error)); }); break; } }