It says if context isn’t parsed then it treats it as SVG and the source code checks for null. So I guess you can parse null as well as a control point radius.
What Path does (as documented in the d3.path notebook) is its accepts canvas “turtle” commands and returns a svg path string.
So for SVG we create this “fake svg context” (Path) instead of the canvas context; the rendering function then uses the same code path to do its drawing. When it returns, either it was canvas and the canvas commands have been sent, or it was svg and the Path has accumulated the drawing information, and can be used as a svg path string.