Symlink path resolution now uses one shared routine, so blocking and non-blocking callers can't drift apart.
What's wrong with this entry?
The code that walks a path resolving symlinks was rebuilt so a single traversal serves both the blocking and non-blocking callers, removing two copies that could drift apart.
- The traversal yields filesystem requests that either a sync or an async driver fulfils.
- A new unreadable-ancestry mode treats any error other than "does not exist" or "not a directory" as unresolvable, instead of ignoring it.
unreadableAncestry
Strings lifted out of the shipped bundle, so the claim above can be checked against them.