Infinite Loop Caused by Controller Action in Lightning Component

I found the solution. DO NOT GIVE YOUR JAVASCRIPT METHOD AND YOUR APEX CONTROLLER METHOD THE SAME NAME. When I defined the saveAction:

var saveAction = component.get("c.saveAccount");

the saveAction was set as the js controller's saveAccount method, and not my Apex controller's saveAccount method. I assumed that anytime we referenced "c.methodName" from the js controller we were referencing the Apex method - that's not the case and this seems pretty buggy to me.

Probably should be added as a best practice or perhaps a known issue somewhere.

I changed the js method name to "saveAcct" and everything works now.