Good question! The reason is because we actually want to let the exception percolate up so that it will reach, e.g., the console---and, in particular, it's break-on-exception feature---for debugging purposes. So that's why we use `try { ... } finally { ...}` instead of `try { ... } catch (e) { ... }`. But if we put a `try { ... } finally { ... }` statement inside a `forEach` or `for` loop, then if multiple callbacks threw exceptions only the *last* would ever be thrown from `getContents`. This way they all get thrown, and hence can all be inspected later, but if one throws it doesn't prevents the others from executing. At least I think that's why I did that :)