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.