# os/run-async Run a command off-thread on the shared per-runtime executor pool and return a Future resolving to the same `%{ :status :stdout :stderr }` map that `os/run` returns. Output is buffered and delivered at completion; a hung command pins a pool thread, so use `os/run` for a simpler blocking call. ## Syntax
[os/run-async $command @args]
## Parameters - `$command` — executable name or path (string) - `@args` — remaining arguments; strings pass through, other values are formatted. At most 64 args are used. ## Examples
[await [os/run-async "sh" "-c" "echo out; echo err >&2"]]
# → %{ :status 0 :stdout "out" :stderr "err" }

[await [os/run-async "sh" "-c" "exit 3"]]
# → %{ :status 3 :stdout "" :stderr "" }

[await [os/run-async "no-such-tool"]]
# → %Err{:message "os/run-async: FileNotFound"}
## Returns A `Future`; `[await $fut]` yields `%{ :status N :stdout "..." :stderr "..." }` with a trailing newline trimmed. Spawn/exec failures resolve to `%Err{:message}`. `%Err` is returned immediately (not as a Future) for a missing command name, missing VM/runtime context, or an executor that cannot start. ## See Also `os/run`, `os/shell`, `await`, `future?`