@anlai considering this is all happening on application startup, and also since we are performing these operations serially, I'd feel much better if you updated the student service to do all calls async and return Task<string> instead of string, and then you could have another method that did the caching and tied the two together.  I just really don't want startup processing to wait while we get SAOT stuff.  Also a timeout and fallback would be good to explicitly set.