public async Task <List <ForumThreadWithCounts> > GetForumThreadsByCategorySlugAsync(string categorySlug, int pageIndex = 0, int pageSize = 50)
        {
            var cacheKey = $"ThreadsOfSlug_{categorySlug}_{pageIndex}_{pageSize}";

            lock (_forumCacheLock)
            {
                if (_forumCache.Exists <List <ForumThreadWithCounts> >(cacheKey))
                {
                    return(_forumCache.Get <List <ForumThreadWithCounts> >(cacheKey));
                }
            }

            var foundThreads = await _forumthreadsRepository.GetForumThreadsByCategorySlugAsync(categorySlug, pageIndex, pageSize);

            lock (_forumCacheLock)
            {
                if (_forumCache.Exists <List <ForumThread> >(cacheKey))
                {
                    //Just in case at the mean time some other request already filled it up!
                    //Rather do this than block  the lock for long time
                    return(_forumCache.Get <List <ForumThreadWithCounts> >(cacheKey));
                }
                _forumCache.AddAbsolute(foundThreads, cacheKey, TimeSpan.FromMinutes(15));
            }
            return(foundThreads);
        }