private function loadUsingCache($callback)
{
$category = $this->getDataProvider()->getCategory();
$cacheKey = implode('|', [$callback, $category->getStoreId(), $category->getId()]);
$data = $this->cache->load($cacheKey);
if ($data !== false) {
$data = unserialize($data);
}
if ($data === false) {
$virtualRule = $category->getVirtualRule();
$data = call_user_func_array([$virtualRule, $callback], [$category]);
$cacheData = serialize($data);
$this->cache->save($cacheData, $cacheKey, [\Magento\Catalog\Model\Category::CACHE_TAG]);
}
return $data;
}