`KilimCache` is a thin wrapper around a Guava `LoadingCache` to provide fully asynchronous lookup and loading
guava provides a CacheLoader, which is used to fill a LoadingCache. the API supports asynchronous reloading of values, but the initial loading and all access during a reload are synchronous. as a result, non-blocking integration with kilim isn't trivial
however, by loading placeholder values and then backfilling when asynchronous retrieval from a backing store completes, the blocking portion can be avoided. all reads from the cache must use the wrapper api (otherwise the placeholder values will be exposed)
this is only available as source code for now but a collection of integrations might be added to kilim or published as a separate artifact at some point