diff --git a/example/scp_nonblock.c b/example/scp_nonblock.c
index 867d851..f26eb75 100644
--- a/example/scp_nonblock.c
+++ b/example/scp_nonblock.c
@@ -253,14 +253,15 @@ int main(int argc, char *argv[])
     printf("Got %d bytes in %ld ms = %.1f bytes/sec spin: %d\n", total,
            time_ms, total/(time_ms/1000.0), spin );
 
-    libssh2_channel_free(channel);
+    while(libssh2_channel_free(channel) == LIBSSH2_ERROR_EAGAIN);
     channel = NULL;
 
 shutdown:
 
-    libssh2_session_disconnect(session,
-                               "Normal Shutdown, Thank you for playing");
-    libssh2_session_free(session);
+    while (libssh2_session_disconnect(session,
+                                      "Normal Shutdown, Thank you for playing") ==
+           LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
diff --git a/example/scp_write_nonblock.c b/example/scp_write_nonblock.c
index 9dfbd4e..d1e5047 100644
--- a/example/scp_write_nonblock.c
+++ b/example/scp_write_nonblock.c
@@ -255,7 +255,7 @@ int main(int argc, char *argv[])
     fprintf(stderr, "Waiting for channel to close\n");
     while (libssh2_channel_wait_closed(channel) == LIBSSH2_ERROR_EAGAIN);
 
-    libssh2_channel_free(channel);
+    while(libssh2_channel_free(channel) == LIBSSH2_ERROR_EAGAIN);
     channel = NULL;
 
  shutdown:
@@ -263,7 +263,7 @@ int main(int argc, char *argv[])
     while (libssh2_session_disconnect(session,
                                       "Normal Shutdown, Thank you for playing") ==
            LIBSSH2_ERROR_EAGAIN);
-    libssh2_session_free(session);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
diff --git a/example/sftp_RW_nonblock.c b/example/sftp_RW_nonblock.c
index babb48a..36a17dc 100644
--- a/example/sftp_RW_nonblock.c
+++ b/example/sftp_RW_nonblock.c
@@ -262,7 +262,7 @@ int main(int argc, char *argv[])
 
     } while (1);
 
-    libssh2_sftp_close(sftp_handle);
+    while(libssh2_sftp_close(sftp_handle) == LIBSSH2_ERROR_EAGAIN);
     fclose(tempstorage);
 
     tempstorage = fopen(STORAGE, "rb");
@@ -321,18 +321,21 @@ int main(int argc, char *argv[])
             }
         } while (1);
         fprintf(stderr, "SFTP upload done!\n");
+        while(libssh2_sftp_close(sftp_handle) == LIBSSH2_ERROR_EAGAIN);
     }
     else {
         fprintf(stderr, "SFTP failed to open destination path: %s\n",
                 dest);
     }
 
-    libssh2_sftp_shutdown(sftp_session);
+    while(libssh2_sftp_shutdown(sftp_session) == LIBSSH2_ERROR_EAGAIN);
 
   shutdown:
 
-    libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
-    libssh2_session_free(session);
+    while (libssh2_session_disconnect(session,
+                                      "Normal Shutdown, Thank you for playing") ==
+           LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
diff --git a/example/sftp_mkdir_nonblock.c b/example/sftp_mkdir_nonblock.c
index 84cdc8f..5f64977 100644
--- a/example/sftp_mkdir_nonblock.c
+++ b/example/sftp_mkdir_nonblock.c
@@ -152,12 +152,14 @@ int main(int argc, char *argv[])
                               LIBSSH2_SFTP_S_IROTH|LIBSSH2_SFTP_S_IXOTH)
            == LIBSSH2_ERROR_EAGAIN);
 
-    libssh2_sftp_shutdown(sftp_session);
+    while(libssh2_sftp_shutdown(sftp_session) == LIBSSH2_ERROR_EAGAIN);
 
  shutdown:
 
-    libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
-    libssh2_session_free(session);
+    while (libssh2_session_disconnect(session,
+                                      "Normal Shutdown, Thank you for playing") ==
+           LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
diff --git a/example/sftp_nonblock.c b/example/sftp_nonblock.c
index 6ddc109..243417c 100644
--- a/example/sftp_nonblock.c
+++ b/example/sftp_nonblock.c
@@ -254,16 +254,16 @@ int main(int argc, char *argv[])
     printf("Got %d bytes in %ld ms = %.1f bytes/sec spin: %d\n", total,
            time_ms, total/(time_ms/1000.0), spin );
 
-    libssh2_sftp_close(sftp_handle);
-    libssh2_sftp_shutdown(sftp_session);
+    while(libssh2_sftp_close(sftp_handle) == LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_sftp_shutdown(sftp_session) == LIBSSH2_ERROR_EAGAIN);
 
 shutdown:
 
     printf("libssh2_session_disconnect\n");
     while (libssh2_session_disconnect(session,
-                                      "Normal Shutdown, Thank you") ==
+                                      "Normal Shutdown, Thank you for playing") ==
            LIBSSH2_ERROR_EAGAIN);
-    libssh2_session_free(session);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
diff --git a/example/sftp_write_nonblock.c b/example/sftp_write_nonblock.c
index 61cc5f4..7350397 100644
--- a/example/sftp_write_nonblock.c
+++ b/example/sftp_write_nonblock.c
@@ -258,14 +258,15 @@ int main(int argc, char *argv[])
 
 
     fclose(local);
-    libssh2_sftp_close(sftp_handle);
-    libssh2_sftp_shutdown(sftp_session);
+    while(libssh2_sftp_close(sftp_handle) == LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_sftp_shutdown(sftp_session) == LIBSSH2_ERROR_EAGAIN);
 
 shutdown:
 
-    while (libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing")
-           == LIBSSH2_ERROR_EAGAIN);
-    libssh2_session_free(session);
+    while (libssh2_session_disconnect(session,
+                                      "Normal Shutdown, Thank you for playing") ==
+           LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
@@ -278,3 +279,4 @@ shutdown:
 
     return 0;
 }
+
diff --git a/example/sftpdir_nonblock.c b/example/sftpdir_nonblock.c
index 38fb010..f4c1481 100644
--- a/example/sftpdir_nonblock.c
+++ b/example/sftpdir_nonblock.c
@@ -226,13 +226,15 @@ int main(int argc, char *argv[])
 
     } while (1);
 
-    libssh2_sftp_closedir(sftp_handle);
-    libssh2_sftp_shutdown(sftp_session);
+    while(libssh2_sftp_closedir(sftp_handle) == LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_sftp_shutdown(sftp_session) == LIBSSH2_ERROR_EAGAIN);
 
   shutdown:
 
-    libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
-    libssh2_session_free(session);
+    while (libssh2_session_disconnect(session,
+                                      "Normal Shutdown, Thank you for playing") ==
+           LIBSSH2_ERROR_EAGAIN);
+    while(libssh2_session_free(session) == LIBSSH2_ERROR_EAGAIN);
 
 #ifdef WIN32
     closesocket(sock);
-- 
1.7.5.4

