Synchronized subscriber in Elixir

defmodule Syncsub do
@moduledoc """
Generated by erl2ex (http://github.com/dazuma/erl2ex)
From Erlang source: (Unknown source file)
At: 2019-12-20 13:57:34

"""

def main() do
{:ok, context} = :erlzmq.context()
{:ok, subscriber} = :erlzmq.socket(context, :sub)
:ok = :erlzmq.connect(subscriber, 'tcp://localhost:5561')
:ok = :erlzmq.setsockopt(subscriber, :subscribe, @<>@)
{:ok, syncclient} = :erlzmq.socket(context, :req)
:ok = :erlzmq.connect(syncclient, 'tcp://localhost:5562')
:ok = :erlzmq.send(syncclient, @<>@)
{:ok, @<>@} = :erlzmq.recv(syncclient)
updates = acc_updates(subscriber, 0)
:io.format('Received ~b updates~n', [updates])
:ok = :erlzmq.close(subscriber)
:ok = :erlzmq.close(syncclient)
:ok = :erlzmq.term(context)
end

def acc_updates(subscriber, n) do
case(:erlzmq.recv(subscriber)) do
{:ok, "END"} ->
n
{:ok, _} ->
acc_updates(subscriber, n + 1)
end
end

end

Syncsub.main