Try setting the terminal point on the geometry of the edge, you can't use the point as a source terminal as it's expected to be a cell (see exception):
edge.geometry.setTerminalPoint(termPoint, true);
If you are trying to implement a space between the terminal and the edge you can also use the STYLE_PERIMETER_SPACING
for the vertex or one of STYLE_SOURCE/TARGET_PERIMETER_SPACING
for the edge.