diff --git a/src/client.rs b/src/client.rs
index b9ff7d3..d59f075 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -42,36 +42,32 @@ impl App {
 
     fn step(&mut self, cx: &mut Context<'_>) -> Result<()> {
         let mut stream = pin!(&mut self.stream);
-        match <_ as futures_sink::Sink<Bytes>>::poll_ready(stream.as_mut(), cx) {
-            Poll::Pending => {}
-            Poll::Ready(result) => {
-                result?;
-                if let Some(frame) = self.client.poll_send() {
-                    stream
-                        .as_mut()
-                        .start_send(frame)
-                        .context("stream.start_send")?;
-                    tracing::debug!("Started send");
-                }
-                match <_ as futures_sink::Sink<Bytes>>::poll_flush(stream.as_mut(), cx) {
-                    Poll::Pending => {}
-                    Poll::Ready(result) => {
-                        result.context("poll_flush")?;
-                    }
+        if let Poll::Ready(result) =
+            <_ as futures_sink::Sink<Bytes>>::poll_ready(stream.as_mut(), cx)
+        {
+            result?;
+            if let Some(frame) = self.client.poll_send() {
+                stream
+                    .as_mut()
+                    .start_send(frame)
+                    .context("stream.start_send")?;
+                tracing::debug!("Started send");
+            }
+            match <_ as futures_sink::Sink<Bytes>>::poll_flush(stream.as_mut(), cx) {
+                Poll::Pending => {}
+                Poll::Ready(result) => {
+                    result.context("poll_flush")?;
                 }
             }
         }
 
-        match stream.as_mut().poll_next(cx) {
-            Poll::Pending => {}
-            Poll::Ready(frame_opt) => {
-                let frame = frame_opt.context("Server closed cxn")?;
-                cx.waker().wake_by_ref();
-                let frame = frame.context("network framing decode")?;
-                self.client
-                    .handle_frame(frame.into())
-                    .context("client.handle_frame")?;
-            }
+        if let Poll::Ready(frame_opt) = stream.as_mut().poll_next(cx) {
+            let frame = frame_opt.context("Server closed cxn")?;
+            cx.waker().wake_by_ref();
+            let frame = frame.context("network framing decode")?;
+            self.client
+                .handle_frame(frame.into())
+                .context("client.handle_frame")?;
         }
 
         if self.timer.poll_tick(cx).is_ready() {