OK, what happens now if you have an error opening one of those files, return an error from inside the for loop, and forget to close the files you'd already opened?
>>gwd+(OP)
You put the files in the collection as you open them, and you register the defer before opening any of them. It works fine. Defer should be lexically scoped.