It sounds like what you want is less "async output" and more "truly parallel execution with whatever work happens to finish earliest" winning the race. This is similar to the Unix process level `wait4(-1,..)` or `waitpid(-1,..)` which I have found quite useful from time to time, but on the finer work granularity of your echo example.
The Nim `threadpool` does have a `blockUntilAny` primitive with which you could build your sort of idea, but this issue I opened over 2 years ago still seems to fail: [https://github.com/nim-lang/Nim/issues/8201](https://github.com/nim-lang/Nim/issues/8201)