This doesn't doesn't *directly* catch exceptions thrown from the done handlers. But it's possible for an exception handler to throw while flies up through the `resolve` call, which breaks that deferred. If we let it go at this point it would also break `_allFilesPromise`, which is what we really care about protecting, since that is what's shared.