See vuejs/rfcs#78 (comment)
I have found some watch callback timing that does not match up with the current RFC.
Specifically,
watch(source, effect, { flush: 'post' }) triggers before DOM update
watch(effect, { flush: 'pre' }) triggers after DOM update