diff --git a/src/async.rs b/src/async.rs
index a7ec891394094a7d4a1dfdafe8be3dde45731cdf..1db9429351848d87638ce8de69de610c900141d0 100644
--- a/src/async.rs
+++ b/src/async.rs
@@ -51,14 +51,14 @@ impl Read for AsyncReader {
         let mut total = 0;
 
         loop {
+            if total >= buf.len() {
+                break;
+            }
+
             match self.recv.try_recv() {
                 Ok(Ok(b)) => {
                     buf[total] = b;
                     total += 1;
-
-                    if total == buf.len() {
-                        break;
-                    }
                 },
                 Ok(Err(e)) => return Err(e),
                 Err(_) => break,