When you use the dataLayer.push() command on a page with a Google Tag Manager container, you pass information to GTM's internal data model and potentially fire tags (if the push() contained an event key). You can also add the eventCallback key to these pushes. The value of this key should be a function, and this function is then executed once the container finishes processing any tags that might have fired on that dataLayer.
There are times when I'm disappointed with Google's developer documentation, especially for Google Tag Manager. Most of the time they get it right, and I'd say around 80% of questions being thrown around the forums can be answered just by reading through the documentation. But there are some cases where the documentation is misleading or even downright dangerous. One of these cases is Enhanced Ecommerce. This isn't going to be a thorough critique of said documentation, but the tip in this post has to do with one of the examples that the documentation gives for measuring Product Clicks.