I can't see any reason to preserve the existing behavior here and in the following to cases of `FileSystem.resolve`, in which we resolve and then read, handling both potential errors. The only reason to call `resolve` would be if it is unclear whether the path refers to a file or directory. We should replace these asynchronous pairs with `FileUtils.readAsText(FileSystem.getFileForPath(path))` and `getDirectoryForPath(path).getContents()` to save ourselves from redundant I/O and error handling.