diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs
index c127fefbf781102e68f4131dc556991d2a899919..f7fa45ee5cc03399b6806799f7df3c076d23e35b 100644
--- a/src/Quasar/Observable.hs
+++ b/src/Quasar/Observable.hs
@@ -229,8 +229,11 @@ instance IsObservable v (MappedObservable v) where
 data LiftA2Observable r = forall r0 r1. LiftA2Observable (r0 -> r1 -> r) (Observable r0) (Observable r1)
 
 instance IsRetrievable r (LiftA2Observable r) where
-  retrieve (LiftA2Observable fn fx fy) =
-    liftA2 fn (retrieve fx) (retrieve fy)
+  retrieve (LiftA2Observable fn fx fy) = do
+    -- LATER: keep backpressure for parallel network requests
+    x <- async $ retrieve fx
+    y <- async $ retrieve fy
+    liftIO $ liftA2 fn (await x) (await y)
 
 instance IsObservable r (LiftA2Observable r) where
   observe (LiftA2Observable fn fx fy) callback = do