/// <inheritdoc /> public async Task <Bucket> MergeBucketIds(Bucket bucket, HttpResponseMessage response, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); if (!response.Headers.TryGetValues(RateLimitBucketHeader, out var headerValues)) { logger.LogWarning($"Response did not have {RateLimitBucketHeader} header."); return(bucket); } var remoteId = headerValues.First(); if (bucket.RemoteId != null) { bucket.RemoteId = remoteId; return(bucket); } var existingBucket = await repository.FindByRemoteIdAndMajorParameters(remoteId, bucket.MajorParameters, cancellationToken); if (existingBucket == null) { bucket.RemoteId = remoteId; return(bucket); } await repository.Remove(bucket, cancellationToken); existingBucket.Endpoints |= bucket.Endpoints; return(existingBucket); }