diff --git a/util/env_test.cc b/util/env_test.cc
index 070109b..f0cb541 100644
--- a/util/env_test.cc
+++ b/util/env_test.cc
@@ -21,14 +21,13 @@
 class EnvTest {
  public:
   Env* env_;
-  EnvTest() : env_(Env::Default()) { }
+  EnvTest() : env_(Env::Default()) {}
 };
 
 static void SetBool(void* ptr) {
   reinterpret_cast<port::AtomicPointer*>(ptr)->NoBarrier_Store(ptr);
 }
 
-
 TEST(EnvTest, ReadWrite) {
   Random rnd(test::RandomSeed());
 
@@ -79,7 +78,9 @@
 TEST(EnvTest, RunImmediately) {
   port::AtomicPointer called(nullptr);
   env_->Schedule(&SetBool, &called);
-  env_->SleepForMicroseconds(kDelayMicros);
+  while (called.NoBarrier_Load() == nullptr) {
+    env_->SleepForMicroseconds(kDelayMicros);
+  }
   ASSERT_TRUE(called.NoBarrier_Load() != nullptr);
 }
 
@@ -87,15 +88,15 @@
   port::AtomicPointer last_id(nullptr);
 
   struct CB {
-    port::AtomicPointer* last_id_ptr;   // Pointer to shared slot
-    uintptr_t id;             // Order# for the execution of this callback
+    port::AtomicPointer* last_id_ptr;  // Pointer to shared slot
+    uintptr_t id;  // Order# for the execution of this callback
 
-    CB(port::AtomicPointer* p, int i) : last_id_ptr(p), id(i) { }
+    CB(port::AtomicPointer* p, int i) : last_id_ptr(p), id(i) {}
 
     static void Run(void* v) {
       CB* cb = reinterpret_cast<CB*>(v);
       void* cur = cb->last_id_ptr->NoBarrier_Load();
-      ASSERT_EQ(cb->id-1, reinterpret_cast<uintptr_t>(cur));
+      ASSERT_EQ(cb->id - 1, reinterpret_cast<uintptr_t>(cur));
       cb->last_id_ptr->Release_Store(reinterpret_cast<void*>(cb->id));
     }
   };
@@ -110,8 +111,14 @@
   env_->Schedule(&CB::Run, &cb3);
   env_->Schedule(&CB::Run, &cb4);
 
-  env_->SleepForMicroseconds(kDelayMicros);
-  void* cur = last_id.Acquire_Load();
+  void* cur;
+  while (true) {
+    env_->SleepForMicroseconds(kDelayMicros);
+    cur = last_id.Acquire_Load();
+    if (reinterpret_cast<uintptr_t>(cur) == 4) {
+      break;
+    }
+  }
   ASSERT_EQ(4, reinterpret_cast<uintptr_t>(cur));
 }
 
@@ -120,7 +127,7 @@
   int val GUARDED_BY(mu);
   int num_running GUARDED_BY(mu);
 
-  State(int val, int num_running) : val(val), num_running(num_running) { }
+  State(int val, int num_running) : val(val), num_running(num_running) {}
 };
 
 static void ThreadBody(void* arg) {
@@ -159,8 +166,8 @@
   ASSERT_TRUE(!env_->FileExists(non_existent_file));
 
   RandomAccessFile* random_access_file;
-  Status status = env_->NewRandomAccessFile(
-      non_existent_file, &random_access_file);
+  Status status =
+      env_->NewRandomAccessFile(non_existent_file, &random_access_file);
   ASSERT_TRUE(status.IsNotFound());
 
   SequentialFile* sequential_file;
