public override async Task SaveAsync(Stream stream, CancellationToken cancellationToken)
        {
            var previousToken = Interlocked.Exchange(ref _reloadToken, new ReloadToken());

            await _storage.SaveAsync(Options.ModelFileName, stream, cancellationToken);

            previousToken?.OnReload();
        }
        public InMemoryModelLoader(InMemoryStorage storage)
        {
            _storage = storage ?? throw new ArgumentNullException(nameof(storage));

            SaveResultFunc = async(options, json, cancellationToken) =>
            {
                await _storage.SaveAsync(json, options.ModelResultFileName, cancellationToken);

                await Task.CompletedTask;
            };

            LoadFunc = (options, cancellationToken) => storage.LoadAsync(options.ModelResultFileName, cancellationToken);
        }