Returns the cached value, suspending while initialization runs when necessary. A failed or cancelled initialization is not cached.