public async Task LoadSingleResultTwice()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = CreateFetch <string, string>("Bar");
            var batchScheduler = new DelayDispatcher();
            var loader         = new DataLoader <string, string>(fetch, batchScheduler);
            var key            = "Foo";

            // first load.
            (await loader.LoadAsync(key)).MatchSnapshot();

            // act
            var result = await loader.LoadAsync(key);

            // assert
            result.MatchSnapshot();
        }
        public async Task LoadCollectionResultTwice()
        {
            // arrange
            FetchDataDelegate <string, string> fetch = CreateFetch <string, string>("Bar");
            var batchScheduler = new DelayDispatcher();
            var loader         = new DataLoader <string, string>(
                fetch,
                batchScheduler);
            var keys = new List <string> {
                "Foo"
            };

            (await loader.LoadAsync(keys, CancellationToken.None)).MatchSnapshot();

            // act
            IReadOnlyList <string> result = await loader.LoadAsync(keys, CancellationToken.None);

            // assert
            result.MatchSnapshot();
        }