# worker/send
Dispatch a job to a worker or pool and return a Future for the handler's
result. Handlers are the `@worker`-marked defs in the worker file.
## Syntax
[worker/send $w "handler-name" args...]
## Parameters
- `$w` — worker or pool handle from `defworker`
- `"handler-name"` — name of an `@worker`-marked def (string)
- args — job arguments, deep-copied across the heap boundary (strings,
keywords, numbers, vectors, sets, maps, tagged maps)
Pools round-robin across their workers. Each worker's job mailbox holds 64
slots; a full mailbox blocks the caller (backpressure).
## Examples
set w [defworker "workers/image.dft"] set fut [worker/send $w "process-image" $bytes 640 480] set out [await $fut] # handler return value set bad [worker/send $w "boom"] # handler throws [await $bad] # → %Err{:message ...} [worker/stop $w]
## Returns
Future resolving to the handler's return value. A handler error resolves
with `%Err{:message}` and the worker keeps running. `%Err` immediately for a
non-handle argument, a stopped/failed worker, a non-string handler name, or
an unknown handler. Jobs run in order on a single worker; state persists
between jobs.
## See Also
`worker/stream`, `worker/stop`, `defworker`, `await`