LazyAsyncValue
A value that is produced asynchronously and cached after first initialized.
Similar to Lazy<T>
but supports asynchronous initialization. Implementations MUST be thread safe.
NOTE: Properties cannot be loaded asynchronously so unlike Lazy<T>
a LazyAsyncValue<T>
cannot be a property delegate.