In this simple example, 10 events are given to a broadcaster. The consumer receives the first event (and only one event), errors out after 5 seconds, and then nothing else happens.
# 14:11:52.771 [debug] Elixir.Stager.Consumer attaching to Elixir.Stager.Broadcaster
# Interactive Elixir (1.4.0) - press Ctrl+C to exit (type h() ENTER for help)
for _ <- 1..10, do: Stager.Broadcaster.sync_notify(:dummy_event)
# 14:12:30.722 [debug] Elixir.Stager.Consumer received events: [:dummy_event]
#=> [:ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok]
# 14:12:35.727 [debug] Elixir.Stager.Consumer attaching to Elixir.Stager.Broadcaster
# 14:12:35.751 [error] GenServer #PID<0.146.0> terminating
** (MatchError) no match of right hand side value: 2
(stager) lib/stager/consumer.ex:36: Stager.Consumer.handle_event/1
(stager) lib/stager/consumer.ex:28: anonymous fn/2 in Stager.Consumer.handle_events/3
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
(stager) lib/stager/consumer.ex:27: Stager.Consumer.handle_events/3
(gen_stage) lib/gen_stage.ex:2408: GenStage.consumer_dispatch/7
(gen_stage) lib/gen_stage.ex:1949: GenStage.handle_info/2
(stdlib) gen_server.erl:615: :gen_server.try_dispatch/4
(stdlib) gen_server.erl:681: :gen_server.handle_msg/5
Last message: {:"$gen_consumer", {#PID<0.145.0>, #Reference<0.0.6.207>}, [:dummy_event]}
State: []