This is a sound article - Clojure's laziness is often a source of common gotchas for new users of the language.
It's often not clear what is lazy and what isn't - concat is lazy for instance. It isn't externally obvious which of the very common operations are lazy, filter being lazy has bitten me in CLJS a few times too.
Adding to the source of the confusion is that the REPL will often realize your side-effects which then won't get evaluated in your runtime environment.
One of the errors I used to make earlier on was:
(map insert-into-db table-rows)