Hey, thanks for the reply.
The only way I can think to do that is if I split the path into an array of paths each containing a single curve and then called getIntersections() for all n! cases, but even a single cubic Bézier curve can self-intersect, so I might not find all of the points. Not to mention the fact that even then there would be the issue of slicing up the path and recombining it correctly.
This problem is way over my head, honestly. I'll just work around it for now, but a method to clean up paths like this would be a really awesome addition to paper.js