From d6957df2b02e83a7bc94bea861bd60cae1ee00b1 Mon Sep 17 00:00:00 2001
From: Kyle Kelley <rgbkrk@gmail.com>
Date: Fri, 13 Dec 2024 09:42:08 -0800
Subject: [PATCH 1/2] Simplify Socket::connect logic with straightforward error
 handling

---
 src/lib.rs | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index fa6d830..720150f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -303,22 +303,13 @@ pub trait Socket: Sized + Send {
         let backend = self.backend();
         let endpoint = TryIntoEndpoint::try_into(endpoint)?;
 
-        let result = match util::connect_forever(endpoint).await {
-            Ok((socket, endpoint)) => match util::peer_connected(socket, backend).await {
-                Ok(peer_id) => Ok((endpoint, peer_id)),
-                Err(e) => Err(e),
-            },
-            Err(e) => Err(e),
-        };
-        match result {
-            Ok((endpoint, peer_id)) => {
-                if let Some(monitor) = self.backend().monitor().lock().as_mut() {
-                    let _ = monitor.try_send(SocketEvent::Connected(endpoint, peer_id));
-                }
-                Ok(())
-            }
-            Err(e) => Err(e),
+        let (socket, endpoint) = util::connect_forever(endpoint).await?;
+        let peer_id = util::peer_connected(socket, backend).await?;
+
+        if let Some(monitor) = self.backend().monitor().lock().as_mut() {
+            let _ = monitor.try_send(SocketEvent::Connected(endpoint, peer_id));
         }
+        Ok(())
     }
 
     /// Creates and setups new socket monitor

From 98f9217d50d2634acbef6f0a4c5c2cd12dc58979 Mon Sep 17 00:00:00 2001
From: Kyle Kelley <rgbkrk@gmail.com>
Date: Fri, 13 Dec 2024 09:57:15 -0800
Subject: [PATCH 2/2] refactor(lib): Simplify error handling in socket bind
 callback

---
 src/lib.rs | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index 720150f..e244d5f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -231,18 +231,16 @@ pub trait Socket: Sized + Send {
         let endpoint = TryIntoEndpoint::try_into(endpoint)?;
 
         let cloned_backend = self.backend();
-        let cback = move |result| {
+        let cback = move |result: ZmqResult<(FramedIo, Endpoint)>| {
             let cloned_backend = cloned_backend.clone();
             async move {
                 let result = match result {
-                    Ok((socket, endpoint)) => {
-                        match util::peer_connected(socket, cloned_backend.clone()).await {
-                            Ok(peer_id) => Ok((endpoint, peer_id)),
-                            Err(e) => Err(e),
-                        }
-                    }
+                    Ok((socket, endpoint)) => util::peer_connected(socket, cloned_backend.clone())
+                        .await
+                        .map(|peer_id| (endpoint, peer_id)),
                     Err(e) => Err(e),
                 };
+
                 match result {
                     Ok((endpoint, peer_id)) => {
                         if let Some(monitor) = cloned_backend.monitor().lock().as_mut() {