Error handling with streams?

By crashing you mean you raise/1 in next_fun?:

fn params ->
  case run_some_search_query(params) do
    {:error, reason} = error ->
      raise(error)

    [] ->
      {:halt, "No more results, done."}

    result_list ->
      (continue streaming)
  end
end,