I think it's a bug, that an imported module cannot find a symbol from a module that the imported module imports.
In the second example, it also has something to do with [this line](https://github.com/nim-lang/Nim/blob/version-2-0/lib/std/tasks.nim#L98), where the identifier is not directly bound as a symbol but placed into the calling module to be bound later. The module `task` also exports `std/isolation`, so it shouldn't have been a problem. However, the bug was triggered when the module was indirectly imported.