watch_directories(): always read directory on watch event, working around watcher issues; only set transaction to null if it is closed