I had the same problem with js2-mode. For a while I just accepted the indentation rules and it started to make sense, and it also helped that I tweaked the code and settings to fix the real annoyances. I was pretty happy with it but I stopped doing a lot of javascript.
Not sure what the status of js2-mode is right now.
Not sure what the status of js2-mode is right now.