public override async Task <InstalledPackagesReply> GetInstalledPackages(InstalledPackagesRequest _, ServerCallContext __) { await _semaphoreSlim.WaitAsync(); var reply = new InstalledPackagesReply(); try { var installedPackages = ROpsApi.GetInstalledPackages(); reply.Payload = new InstalledPackagesPayload(); reply.Payload.InstalledPackages.Add(installedPackages); } catch (Exception ex) { reply.Error = PopulateError(ex); _logger.LogError(ex, nameof(GetInstalledPackages)); } finally { _semaphoreSlim.Release(); } return(await Task.FromResult(reply)); }