diff --git a/lib/procrastinate/utils/one_time_flag_ruby18_shim.rb b/lib/procrastinate/utils/one_time_flag_ruby18_shim.rb
index <HASH>..<HASH> 100644
--- a/lib/procrastinate/utils/one_time_flag_ruby18_shim.rb
+++ b/lib/procrastinate/utils/one_time_flag_ruby18_shim.rb
@@ -1,7 +1,5 @@
 class Procrastinate::Utils::OneTimeFlag
   def initialize
-    @waiting_m  = Mutex.new
-    @waiting_cv = ConditionVariable.new
     @set        = false
   end
   
@@ -10,18 +8,13 @@ class Procrastinate::Utils::OneTimeFlag
   def wait
     return if set?
     
-    @waiting_m.synchronize do
-      @waiting_cv.wait(@waiting_m)
-    end
+    sleep(0.01) until set?
   end
   
   # Sets the flag and releases all waiting threads.
   #
   def set
     @set = true
-    @waiting_m.synchronize do
-      @waiting_cv.broadcast
-    end
   end
   
   # Non blocking: Is the flag set?
! working <I> lock implementation

I know this is a bad bad busy loop. But I also know that the threading primitives Ruby includes fail me once again at this point.