only trigger onChange after the previous onChange has returned. Also keep the filesystem up to date, but only update listeners on changes to their path