Having separate code path to pre-fill our cache than the API endpoints is a recipy for creating heisenbugs.  Unified for all but permissions-json (there are code paths I don't understand well, see comments in code, and read-posts-json (there is no API endpoint as far as I can tell).