diff --git a/crates/lune-std/src/globals/require/context.rs b/crates/lune-std/src/globals/require/context.rs
index c38c694..5f0329c 100644
--- a/crates/lune-std/src/globals/require/context.rs
+++ b/crates/lune-std/src/globals/require/context.rs
@@ -102,8 +102,13 @@ impl RequireContext {
 
             let pending = data_ref.pending.try_lock()?;
 
-            if let Some(a) = pending.get(&path_abs) {
-                a.subscribe().recv().await?;
+            if let Some(sender) = pending.get(&path_abs) {
+                let mut receiver = sender.subscribe();
+
+                // unlock mutex before using async
+                drop(pending);
+
+                receiver.recv().await?;
             }
         }