The buffer should really be tracked to be large enough to prevent CPU starvation and to delay download so that blocks don't need to be read from disk. In other words, feeding back into the download window when we are validating. This should be straightforward.
(edited)