<PackageReference Include="Nito.AsyncEx.Coordination" Version="5.1.0" />

Nito.AsyncEx.AsyncLazy<T>

public sealed class AsyncLazy<T>
Provides support for asynchronous lazy initialization. This type is fully threadsafe.
namespace Nito.AsyncEx { public sealed class AsyncLazy<[System.Runtime.CompilerServices.Nullable(2)] T> { public int Id { get; } public bool IsStarted { get; } public Task<T> Task { get; } public AsyncLazy(Func<Task<T>> factory, AsyncLazyFlags flags = AsyncLazyFlags.None); public TaskAwaiter<T> GetAwaiter(); public ConfiguredTaskAwaitable<T> ConfigureAwait(bool continueOnCapturedContext); public void Start(); } }