diff --git a/lib/multi.c b/lib/multi.c
index 9cc6944c9..d2c94590e 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1656,8 +1656,10 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         multistate(easy, CURLM_STATE_COMPLETED);
       }
       /* if there's still a connection to use, call the progress function */
-      else if(easy->easy_conn && Curl_pgrsUpdate(easy->easy_conn))
+      else if(easy->easy_conn && Curl_pgrsUpdate(easy->easy_conn)) {
         easy->result = CURLE_ABORTED_BY_CALLBACK;
+        multistate(easy, CURLM_STATE_COMPLETED);
+      }
     }
   } WHILE_FALSE; /* just to break out from! */