¿Cuáles son las reglas para la inserción automática de punto y coma (ASI) de JavaScript?

Bueno, primero probablemente debería preguntar si esto depende del navegador. He leído que si se encuentra un token no válido, pero la sección de código es válida hasta ese token no válido, se inserta un punto y coma antes del token si está precedido por un salto de línea. Sin embargo, el ejemplo...