Since the synthetic event approach relies on changing a special document and then getting a notification about it in the same stream as the observe, this doesn't work on queries like r.table('cities').orderBy({index:'name'}).limit(3) if there are at least 3 documents we are interested in. Because the "special" doc is likely to get excluded, we will never receive any notifications about it. This way the write fence will never get released.
See e4fb0bb for the commit with a failing test.
Solution: wait until Rethink releases a version like 2.2 that actually returns the revision numbers with every write and every change feed notification. This is unlikely to happen very soon.