@alasdairhodge The call to `propagate(...)` is because it throws a `RuntimeException` 
wrapping the `IOException`, and therefore we don't have to declare any checked exceptions on the method.