diff --git a/async-message-passing/src/main.rs b/async-message-passing/src/main.rs
index 671e08d..087b3bb 100644
--- a/async-message-passing/src/main.rs
+++ b/async-message-passing/src/main.rs
@@ -1,4 +1,4 @@
-use std::time::Duration;
+use std::{pin::Pin, time::Duration};
 
 fn main() {
     trpl::run(async {
@@ -39,6 +39,9 @@ fn main() {
             }
         };
 
-        trpl::join!(tx1_fut, tx_fut, rx_fut);
+        let futures: Vec<Pin<Box<dyn Future<Output = ()>>>> =
+            vec![Box::pin(tx1_fut), Box::pin(rx_fut), Box::pin(tx_fut)];
+
+        trpl::join_all(futures).await;
     });
 }