private void RemoveExpiredWrappers()
        {
            Task.Run(() =>
            {
                var now = _clock.UtcNow;

                var toRemove = _requestWrappers
                               .Where(kvp => kvp.Value.ExpiresAfter >= now)
                               .ToArray();

                foreach (var kvp in toRemove)
                {
                    RemoveWrapper(kvp.Key);
                    _logger.Debug("Removing request {0} which timed out at {1}", kvp.Key, kvp.Value.ExpiresAfter);
                }
            });
        }