using a blocking method to check for new watch service events instead of using Thread.sleep