MirageOS gibi tamamen olay tabanlı sistemler, geleneksel öncelikli iş parçacıklarını desteklemez; bunun yerine programlar, ağ paketleri gibi olaylarla tetiklenir ve G/Ç veya zamanlayıcılar nedeniyle engellenene kadar çalışır. Bu tür sistemler basit, ölçeklenebilir ve node.js gibi framework'ler sayesinde popüler olsa da, olay geri çağrımlarını doğrudan programlamak kontrol mantığının birçok küçük fonksiyona dağılmasına yol açar. Bu da olay kaydı ve tetiklenmesini bekleme gibi kesintileri gizlemek için soyutlamalara ihtiyaç duyulmasına neden olur.
OCaml, bu sorunu monadik bir yaklaşımla çözen Lwt iş parçacığı kütüphanesini sunar. Lwt, return, bind ve run gibi fonksiyonlar aracılığıyla asenkron işlemlerin yönetilmesini sağlar. Örneğin, bir işlem bittikten sonra başka bir işlem yapmak için bind fonksiyonu kullanılır. MirageOS, ağ yığını oluşturmak için Lwt'i yoğun bir şekilde kullanmakta ve bu konuda oldukça başarılı olmuştur. Ancak, 2011 OCaml Kullanıcıları Grubu toplantısında Lwt'in herkesin beğenisine sunulmadığına dair tartışmalar yaşanmıştır.
Lwt'in monadik tarzı, mevcut kodların doğrudan çalışmamasına ve blokaj potansiyeli olan her noktanın return ve bind kullanacak şekilde uyarlanmasını gerektirmesine neden olur. Bu durum, üçüncü taraf kodların entegrasyonunu zorlaştırır ve her potansiyel blokaj noktasında kapanış (closure) tahsisini gerektirir, ki bu OCaml'de ucuz olsa da ücretsiz değildir. Lwt, bu sorunları lwt, for_lwt ve match_lwt gibi kapsamlı sözdizimi uzantılarıyla ele alır, bu sayede kod daha OCaml benzeri bir görünüm kazanır ve yaygın kontrol akışı yapıları için kolaylık sağlar.
Olay tabanlı sistemlerde asenkron programlamanın karmaşıklığını azaltmak için Lwt gibi monadik kütüphanelerin sunduğu çözümleri ve karşılaştığı zorlukları anlamak, daha verimli ve okunabilir kod yazmanın yollarını açar.