I'm not a Nim expert by far, but I've had some success doing something similar.
However, I was using asynctools' asyncproc. What I found was getting data back
from the second process was relatively painless, but getting data to it through
stdin didn't work for me. asynctools uses pipes, but newly compiled programs
with Nim only seem to take stdin on streams and not pipes, which is why I
abandoned that route. Getting input back through pipes using asynctools seemed
to work flawlessly though, at least without extensive testing. I'm not sure
async would meet your needs though if it is time sensitive. Now after thinking
about it more, I'm not sure my spawned process used async methods and I'm not
sure if that is important or not.