private async Task DoWorkAsync()
        {
            while (!_cancellationToken.IsCancellationRequested)
            {
                try
                {
                    _logger.LogDebug("Exporting metrics to Stackdriver...");

                    var stopwatch = Stopwatch.StartNew();
                    await _recorder.FlushAsync(this);

                    stopwatch.Stop();

                    _logger.LogDebug("Exporting metrics to Stackdriver finished");

                    var delay = _options.ExportInterval - stopwatch.Elapsed;

                    if (delay.TotalMilliseconds > 0)
                    {
                        await Task.Delay(delay, _cancellationToken);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogWarning(e, "Failed to export metrics to Stackdriver");

                    if (!_cancellationToken.IsCancellationRequested)
                    {
                        await Task.Delay(_options.ExportInterval, _cancellationToken);
                    }
                }
            }

            _logger.LogInformation("Stackdriver metric exporter stopped");
        }