I'm remaking bevels from classic ROBLOX using UnionAsync and when I run the script, I get the -25 CSG error. Here is the code:

local bevel_size = 0.05
local inlet = bevel_size

local plugin = {}

function plugin:Negate(objects)
	local negates = {}
	
	for i, v in ipairs(objects) do
		-- _, _ = pcall(function()
		local thing = Instance.new("NegateOperation", nil)
		thing.CFrame = v.CFrame
		thing.Size = v.Mesh.Scale -- v.Size
		
		v:Destroy()
		
		table.insert(negates, #negates + 1, thing)
		-- end)
	end
	
	return negates
end

function plugin:Union(objects)
	local otherObjects = {}
	local union
	
	for i, v in ipairs(objects) do
		if i >= 2 then
			table.insert(otherObjects, #otherObjects + 1, v)
		end
	end
	
	local success, response = pcall(function()
		union = objects[1]:UnionAsync(otherObjects)
	end)
	
	if not success then
		warn(response)
	end
	
	return union
end

function bevel(s)
	local name = s.Name
	
	--[[if s:IsA'UnionOperation' then
		local composition = plugin:Separate{s}
		for index, obj in next, composition do
			composition[index] = bevel(obj)
		end
		return plugin:Union(composition)
	elseif s:IsA'NegateOperation' then
		s = unpack(plugin:Negate{s})
		s = bevel(s)
		s = unpack(plugin:Negate{s})
		return s
	else]]
	if s:IsA'Part' then
		-- Edges
		local edges = {}
		for x=-1,1,2 do
			for y=-1,1,2 do
				local p = s.CFrame * CFrame.new(s.Size*Vector3.new(x/2, y/2, 0)) * CFrame.Angles(0, 0, math.pi/4)
				local l = s.Size * Vector3.new(0, 0, 1) + Vector3.new(inlet, inlet, 0)
				local part = Instance.new'Part'
				part.FormFactor = 'Custom'
				part.BrickColor = s.BrickColor
				part.CFrame = p
				part.Size = Vector3.new(1,1,1)
				local mesh = Instance.new'BlockMesh'
				mesh.Parent = part
				mesh.Scale = l
				part.Parent = workspace print('prot',part.Rotation)
				local neg = unpack(plugin:Negate{part})
				if neg then table.insert(edges, neg) end
			end
		end
		for z=-1,1,2 do
			for y=-1,1,2 do
				local p = s.CFrame * CFrame.new(s.Size*Vector3.new(0, y/2, z/2)) * CFrame.Angles(math.pi/4, 0, 0)
				local l = s.Size * Vector3.new(1, 0, 0) + Vector3.new(0, inlet, inlet)
				local part = Instance.new'Part'
				part.FormFactor = 'Custom'
				part.BrickColor = s.BrickColor
				part.CFrame = p
				part.Size = Vector3.new(1,1,1)
				local mesh = Instance.new'BlockMesh'
				mesh.Parent = part
				mesh.Scale = l
				local neg = unpack(plugin:Negate{part})
				if neg then table.insert(edges, neg) end
			end
		end
		for z=-1,1,2 do
			for x=-1,1,2 do
				local p = s.CFrame * CFrame.new(s.Size*Vector3.new(x/2, 0, z/2)) * CFrame.Angles(0, math.pi/4, 0)
				local l = s.Size * Vector3.new(0, 1, 0) + Vector3.new(inlet, 0, inlet)
				local part = Instance.new'Part'
				part.FormFactor = 'Custom'
				part.BrickColor = s.BrickColor
				part.CFrame = p
				part.Size = Vector3.new(1,1,1)
				local mesh = Instance.new'BlockMesh'
				mesh.Parent = part
				mesh.Scale = l
				local neg = unpack(plugin:Negate{part})
				if neg then table.insert(edges, neg) end
			end
		end
		s = s:UnionAsync(edges) -- plugin:Union{s, unpack(edges)}
		s.Name = name
		s.UsePartColor = true
		return s
	elseif s:IsA'WedgePart' then
		-- Edges
		local edges = {}
		for x=-1,1,2 do
			for y=-1,-1 do
				local p = s.CFrame * CFrame.new(s.Size*Vector3.new(x/2, y/2, 0)) * CFrame.Angles(0, 0, math.pi/4)
				local l = s.Size * Vector3.new(0, 0, 1) + Vector3.new(inlet, inlet, 0)
				local part = Instance.new'Part'
				part.FormFactor = 'Custom'
				part.BrickColor = s.BrickColor
				part.CFrame = p
				part.Size = Vector3.new(1,1,1)
				local mesh = Instance.new'BlockMesh'
				mesh.Parent = part
				mesh.Scale = l
				part.Parent = workspace
				local neg = unpack(plugin:Negate{part})
				if neg then table.insert(edges, neg) end
			end
		end
		for z=-1,1,2 do
			for y=-1,1,2 do
				if not (z==-1 and y==1) then
					local p = s.CFrame * CFrame.new(s.Size*Vector3.new(0, y/2, z/2)) * CFrame.Angles(math.pi/4, 0, 0)
					local l = s.Size * Vector3.new(1, 0, 0) + Vector3.new(0, inlet, inlet)
					local part = Instance.new'Part'
					part.FormFactor = 'Custom'
					part.BrickColor = s.BrickColor
					part.CFrame = p
					part.Size = Vector3.new(1,1,1)
					local mesh = Instance.new'BlockMesh'
					mesh.Parent = part
					mesh.Scale = l
					local neg = unpack(plugin:Negate{part})
					if neg then table.insert(edges, neg) end
				end
			end
		end
		for z=1,1 do
			for x=-1,1,2 do
				local p = s.CFrame * CFrame.new(s.Size*Vector3.new(x/2, 0, z/2)) * CFrame.Angles(0, math.pi/4, 0)
				local l = s.Size * Vector3.new(0, 1, 0) + Vector3.new(inlet, 0, inlet)
				local part = Instance.new'Part'
				part.FormFactor = 'Custom'
				part.BrickColor = s.BrickColor
				part.CFrame = p
				part.Size = Vector3.new(1,1,1)
				local mesh = Instance.new'BlockMesh'
				mesh.Parent = part
				mesh.Scale = l
				local neg = unpack(plugin:Negate{part})
				if neg then table.insert(edges, neg) end
			end
		end
		for v=-1,1,2 do
			local p = s.CFrame * CFrame.new(s.Size*Vector3.new(v/2, 0, 0)) * CFrame.Angles(-math.atan(s.Size.y/s.Size.z), 0, math.pi/4)
			local l = Vector3.new(inlet, inlet, s.Size.x+s.Size.y+s.Size.z)
			local part = Instance.new'Part'
			part.FormFactor = 'Custom'
			part.BrickColor = s.BrickColor
			part.CFrame = p
			part.Size = Vector3.new(1,1,1)
			local mesh = Instance.new'BlockMesh'
			mesh.Parent = part
			mesh.Scale = l
			local neg = unpack(plugin:Negate{part})
			if neg then table.insert(edges, neg) end
		end
		s = s:UnionAsync(edges) -- plugin:Union{s, unpack(edges)}
		s.Name = name
		s.UsePartColor = true
		return s
	end
end

for i, v in ipairs(workspace:GetDescendants()) do
	local parent = v.Parent
	local beveled = bevel(v)
	if beveled then
		beveled.Parent = parent
	end
end

Help with this would be appreciated.