yes but ElementNotVisible defines the element state of the element being present but not visible. So when the loop times out we need to know what the last Exception was and then raise the Timeout based on that.
We still need to catch the StaleElement but it's not useful.