I thought that err should terminate source code processing with error
It was this way in fasm 1 but not in fasmg. There are no instant-termination errors in fasmg other than running out of memory. The ERR just collects an error to display (fasmg allows to display multiple errors collected from an entire source). If you write a loop that is at risk of running endlessly, you need to put some safety breaks there yourself.
The thing is: since fasmg allows anything, including symbolic variables and macros, to be forward-referenced, any kind of error might be a false alarm. For this reason the assembler always needs to continue processing, because the error may go away when more values get resolved (just like the arithmetic overflow in fasm 1 did not abort the assembly because it could disappear in a subsequent pass).