# 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`