AnonymousDisposable
Represents an Action-based disposable.
            
                using System.Runtime.CompilerServices;
using System.Threading;
namespace System.Reactive.Disposables
{
    internal sealed class AnonymousDisposable : ICancelable, IDisposable
    {
        [System.Runtime.CompilerServices.Nullable(2)]
        private volatile Action _dispose;
        public bool IsDisposed => _dispose == null;
        [System.Runtime.CompilerServices.NullableContext(1)]
        public AnonymousDisposable(Action dispose)
        {
            _dispose = dispose;
        }
        public void Dispose()
        {
            Interlocked.Exchange(ref _dispose, null)?.Invoke();
        }
    }
}