Concave parameteric surface mesh generation

I would like to generate a surface mesh, using a parametric function f(x,y,z) = (x-(z^2))^2 + y^2 + z^2-1.
Generating points and creating a vertex list is not an issue. How would I create a proper topology, to then create a simple mesh using Meshes.jl?
I can create a top and bottom surface but I’m not able to connect them properly. I keep getting into some issue when running a partial differential equation code on it (the PDE code works fine for a sphere, generated using Primitives in Meshes.jl)

Using MarchingTetrahedra from Meshing.jl can generate a proper topology.

Here is a basic example:

using Meshing: MarchingTetrahedra, isosurface
f(x,y,z) = (x-(z^2))^2 + y^2 + z^2-1
lower_bound = (-2.0, -2.0, -2.0)
upper_bound = (2.0, 2.0, 2.0)
xr,yr,zr = ntuple(i->LinRange(lower_bound[i], upper_bound[i], 50),3)
sdf = [f(x,y,z) for x in xr, y in yr, z in zr]
vts, fcs = isosurface(sdf, MarchingTetrahedra(), xr, yr, zr)

Visualized with MeshCat.jl

using GeometryBasics: Mesh, Point, TriangleFace
using MeshCat: Visualizer, setobject!, render
vis = Visualizer()
mesh = Mesh(Point.(vts), TriangleFace.(fcs))
setobject!(vis, mesh)
render(vis)