Use BasePart:IntersectAsync() or GeometryService:IntersectAsync()?

Which one should I use for my game, BasePart:IntersectAsync() or GeometryService:IntersectAsync()?

The script that will be doing this is on the client, so which would be better at replicating the behavior of the Solid Modeling tools in Studio?

I’ve also started to dabble a little bit, and I’ve ran into some issues with the geometry service way.
So I start with this:


And when I intersect all three in studio, I get this:
image
works as I expect it, no issues. However, when I do it with my script, this happens:
image
For some reason, only two parts are accounted for, the third is ignored.
Here’s the game link:
UnionsInRoblox.rbxl (57.2 KB)
Thanks!