This sounds like a job for TaskSupervisor.async_stream to me. I use that a lot to “fan out” jobs into concurrent pieces, but still collect their responses. Do review all the options for that function though. I use ordered: false quite often.
However, if you really need :gen_statem to manage incoming messages to each of your jobs, then this approach is too simple.


















