# worker/stream
Streaming variant of `worker/send`: `yield` inside the handler pushes values
incrementally onto the returned stream instead of producing one final
result.
## Syntax
[worker/stream $w "handler-name" args...]
## Parameters
- `$w` — worker or pool handle from `defworker`
- `"handler-name"` — `@worker`-marked def (string)
- args — job arguments, deep-copied like `worker/send`
Read with `task/stream-next` (nil when done) or `task/stream-collect`; the
stream is seqable, so `map`/`filter`/`reduce`/`for` pull items lazily.
## Examples
# worker file: count-up is @worker-marked and does `yield $i` in a loop set s [worker/stream $w "count-up" 3] [task/stream-next $s] # → 1 [task/stream-collect $s] # → @{ 2 3 }
## Returns
A stream resource. The handler's final return value is dropped; a handler
error ends the stream (earlier yields survive) and the worker keeps running.
Argument errors (non-handle, stopped worker, unknown handler) return `%Err`
as with `worker/send`. `worker/stop` finishes any open streams.
## See Also
`worker/send`, `task/stream-next`, `task/stream-collect`, `defworker`