This is still a bit confusing. I think `push` is done perfectly, and you should follow that model: "when some external event happens, you MUST call `<the function>`, and also do other steps"