diff --git a/cbits/c_fsevents.m b/cbits/c_fsevents.m
--- a/cbits/c_fsevents.m
+++ b/cbits/c_fsevents.m
@@ -74,6 +74,14 @@
     pthread_mutex_init(&w->mut, NULL);
     pthread_mutex_lock(&w->mut);
     pthread_create(&t, NULL, &watchRunLoop, (void*)w);
+
+    // Wait for watchRunLoop to release the mutex.
+    // This way, we know it has finished calling FSEventStreamStart before we return.
+    // If not, we'd have a race condition where filesystem events from just after the watch
+    // creation could be missed.
+    pthread_mutex_lock(&w->mut);
+    pthread_mutex_unlock(&w->mut);
+
     *fd = pfds[0];
     *wp = w;
     rv = 0;
diff --git a/hfsevents.cabal b/hfsevents.cabal
--- a/hfsevents.cabal
+++ b/hfsevents.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                hfsevents
-version:             0.1.7
+version:             0.1.8
 synopsis:            File/folder watching for OS X
 homepage:            http://github.com/luite/hfsevents
 license:             BSD-3-Clause
