private async Task <FilterLog[]> RetrieveLogsAsync(
            BlockRange range, NewFilterInput filter, uint retryNumber = 0)
        {
            try
            {
                filter.SetBlockRange(range);

                _log.LogInformation($"RetrieveLogsAsync - getting logs. RetryNumber:{retryNumber}, from:{range.From}, to:{range.To}.");

                return(await _eventLogProxy.GetLogs(filter).ConfigureAwait(false));
            }
            catch (Exception ex)
            {
                _log.LogError("Get Logs Error", ex);

                retryNumber++;
                if (retryNumber < MaxRetries)
                {
                    _log.LogInformation("Pausing before retry get logs");
                    await RetryWaitStrategy.Apply(retryNumber).ConfigureAwait(false);

                    _log.LogInformation("Retrying get logs");
                    return(await RetrieveLogsAsync(range, filter, retryNumber)
                           .ConfigureAwait(false));
                }

                _log.LogError("MaxRetries exceeded when getting logs, throwing exception.", ex);

                throw;
            }
        }