I'm answering my own question because the solution was so unexpected and simple it bears repeating. Full credit to Chris Butler for answering this related question: Unable to `submit()` an html form after intercepting the submit with javascript (note, his wasn't the accepted answer).
Answer: if you name & #id your submit buttons "submit" that will clash with the name of the native JavaScript .submit() method which will no longer work and give the type error described in the question.
So the solution in my case was to rename my submit button to something else.
To recap:
To intercept a form submission you could intercept the click on the submit button or intercept the form submission itself. If your objective is to intercept the form submission then do that, not the click event on the submit button, as forms can be submitted by other events such as hitting enter on a textfield.
If you intercept the form via jQuery with, e.g. $("#myForm").on("submit", function() {...})
and then go on to pass off the submit handling to another function (e.g. as in the question where a call to a geocoding api is made) then that function will need to trigger the form submission via acting on the DOM form element directly (e.g. `document.getElementById('myForm').submit() ) which will submit the form without triggering the onsubmit event so that the initial intercept isn't triggered again creating an infinite loop as it would be if you used jQuery to trigger the submit.