We need to cleanup these files after they are drained.
Question: What happens if something like take() is run, which won't drain the iterator fully? I am concerned that cleanup code may never be executed.