   @type server_option ::
           {:worker_count, pos_integer}
           | {:name, atom}
-          | {:max_restarts, non_neg_integer}
-          | {:max_seconds, non_neg_integer}
           | {:tcp_opts, :ranch_tcp.opts()}
           | {:ssl_opts, [Thrift.Transport.SSL.option()]}
           | {:transport_opts, :ranch.opts()}

    Supervisor.start_link(
      [listener],
      strategy: :one_for_one,
      max_restarts: max_restarts,
      max_seconds: max_seconds
    )
  end


  @spec start_link(module, port :: 1..65_535, module, [server_option]) :: GenServer.on_start()
  def start_link(server_module, port, handler_module, opts) do
    name = Keyword.get(opts, :name, handler_module)
    worker_count = Keyword.get(opts, :worker_count, 1)
    tcp_opts = Keyword.get(opts, :tcp_opts, [])
    ssl_opts = Keyword.get(opts, :ssl_opts, [])
