public async Task Download()
        {
            // get 1kb from start
            var chunkInfo = new ChunkInfo(0, 1024);
            var chunk = await Downloader.DownloadChunk(chunkInfo);

            Assert.AreEqual(chunkInfo.Start, chunk.Start);
            Assert.AreEqual(chunkInfo.Length, chunk.Length);
        }
        //[TestMethod]
        public async Task DownloadEnd()
        {
            // get 1kb from near end
            var chunkInfo = new ChunkInfo(RESOURCE_LENGTH, 1024);

            var chunk = await Downloader.DownloadChunk(chunkInfo);
            Assert.AreEqual(chunkInfo.Start, chunk.Start);
            Assert.AreEqual(0, chunk.Length);
        }
        public async Task<IChunk> DownloadChunk()
        {
            var chunkInfo = await ChunkSaver.GetNextEmptyChunk(Destination);

            var checkedChunkInfo = new ChunkInfo(
                chunkInfo.Start,
                Math.Min(ChunkLength, chunkInfo.Length)
            );
            var chunk = await ChunkDownloader.DownloadChunk(checkedChunkInfo);
            return chunk;
        }