Oki, so there is a lot of thing i dont understand in this code, i’ll read upp on it but basicaly like this?
Booth AsyncLocal and System.Web.HttpContext.Current is knowlage gaps for me right now, so i cant tell if this make sense 
Is the httpContext checks needed or was that just for the requestModel? I also need to set this value somewhere? do i need to create an IActionFilter like the RequestModelActionFilter?
namespace Litium.Accelerator.Services
{
[Service(ServiceType = typeof(PreloadMediaAccessor)]
public class PreloadMediaAccessor
{
private static readonly AsyncLocal<List<MediaJsonModel>> _mediaToPreload = new AsyncLocal<List<MediaJsonModel>>();
public virtual List<MediaJsonModel> MediaToPreload
{
get
{
var context = System.Web.HttpContext.Current;
if (context != null)
{
return (List<MediaJsonModel>)context.Items[nameof(List<MediaJsonModel>)];
}
return _mediaToPreload.Value;
}
set
{
var context = System.Web.HttpContext.Current;
if (context != null)
{
context.Items[nameof(List<MediaJsonModel>)] = value;
}
else
{
_mediaToPreload.Value = value;
}
}
}
}
}
Insted of writing a ActionFilter could i just set it if null like this?
get
{
var context = System.Web.HttpContext.Current;
if (context != null)
{
var mediaToPreload = (List<MediaJsonModel>)context.Items["MediaToPreload"];
if(mediaToPreload == null)
{
mediaToPreload = MediaToPreload = new List<MediaJsonModel>();
}
return mediaToPreload;
}
return _mediaToPreload.Value;
}