handle detached dom nodes

when dom node is detached, immediately add a watch for it and wait for
an event to trigger the watch (scroll)
add more helpers
make visible test async

While the callback is immediately called because element is immediately
visible, it must be/could be async