diff --git a/src/Nito.AsyncEx.Coordination/AsyncLazy.cs b/src/Nito.AsyncEx.Coordination/AsyncLazy.cs index db9811b..4f93df0 100644 --- a/src/Nito.AsyncEx.Coordination/AsyncLazy.cs +++ b/src/Nito.AsyncEx.Coordination/AsyncLazy.cs @@ -40,11 +40,6 @@ public sealed class AsyncLazy /// private readonly object _mutex; - /// - /// The factory method to call. - /// - private readonly Func> _factory; - /// /// The underlying lazy task. /// @@ -77,14 +72,15 @@ public AsyncLazy(Func> factory, AsyncLazyFlags flags = AsyncLazyFlags.No { if (factory == null) throw new ArgumentNullException(nameof(factory)); - _factory = factory; + + var innerFactory = factory; if ((flags & AsyncLazyFlags.RetryOnFailure) == AsyncLazyFlags.RetryOnFailure) - _factory = RetryOnFailure(_factory); + innerFactory = RetryOnFailure(innerFactory); if ((flags & AsyncLazyFlags.ExecuteOnCallingThread) != AsyncLazyFlags.ExecuteOnCallingThread) - _factory = RunOnThreadPool(_factory); + innerFactory = RunOnThreadPool(innerFactory); _mutex = new object(); - _instance = new Lazy>(_factory); + _instance = new Lazy>(innerFactory); } /// @@ -131,7 +127,7 @@ private Func> RetryOnFailure(Func> factory) { lock (_mutex) { - _instance = new Lazy>(_factory); + _instance = new Lazy>(factory); } throw; }