public async Task <ResourceTagSet[]> ListTagsForHealthChecksAsync(IEnumerable <string> resourceIds, CancellationToken cancellationToken = default(CancellationToken)) { if (resourceIds.IsNullOrEmpty()) { if (resourceIds == null) { return(null); } else { return(new ResourceTagSet[0]); } } //Batches can be max 10 var result = await _locker.Lock(() => resourceIds.Batch(10).ForEachAsync( b => _client.ListTagsForResourcesAsync(new ListTagsForResourcesRequest() { ResourceIds = b.ToList(), ResourceType = TagResourceType.Healthcheck }, cancellationToken: cancellationToken).EnsureSuccessAsync() , maxDegreeOfParallelism: _maxDegreeOfParalelism, cancellationToken: cancellationToken) ); return(result.SelectMany(x => x.ResourceTagSets).ToArray()); }