I think I might have encountered a bug in the Intersection.CurveSurface Method (Curve, Interval, Surface, Double, Double) method used with the subdomain parameter.
In a specific situation (see attached grasshopper definition), the method returns a valid intersection point between a sphere and a curve. However, the point is not in the specified subdomain and the method should not return any intersection object (I think). Conversely, the method returns a valid intersection point (XYZ coords) but with a wrong curve parameter, which is in fact the lower bound of the specified subdomain.