diff --git a/web/pgadmin/utils/driver/psycopg2/__init__.py b/web/pgadmin/utils/driver/psycopg2/__init__.py
index d4465ea..95aa95c 100644
--- a/web/pgadmin/utils/driver/psycopg2/__init__.py
+++ b/web/pgadmin/utils/driver/psycopg2/__init__.py
@@ -1044,9 +1044,31 @@ Failed to reset the connection to the server due to following error:
         if state == psycopg2.extensions.POLL_OK:
             return self.ASYNC_OK
         elif state == psycopg2.extensions.POLL_WRITE:
-            return self.ASYNC_WRITE_TIMEOUT
+            # Wait for the given time and then check the return status
+            # If three empty lists are returned then the time-out is reached.
+            timeout_status = select.select([], [conn.fileno()], [], time)
+            if timeout_status == ([], [], []):
+                return self.ASYNC_WRITE_TIMEOUT
+
+            # poll again to check the state if it is still POLL_WRITE
+            # then return ASYNC_WRITE_TIMEOUT else return ASYNC_OK.
+            state = conn.poll()
+            if state == psycopg2.extensions.POLL_WRITE:
+                return self.ASYNC_WRITE_TIMEOUT
+            return self.ASYNC_OK
         elif state == psycopg2.extensions.POLL_READ:
-            return self.ASYNC_READ_TIMEOUT
+            # Wait for the given time and then check the return status
+            # If three empty lists are returned then the time-out is reached.
+            timeout_status = select.select([conn.fileno()], [], [], time)
+            if timeout_status == ([], [], []):
+                return self.ASYNC_READ_TIMEOUT
+
+            # poll again to check the state if it is still POLL_READ
+            # then return ASYNC_READ_TIMEOUT else return ASYNC_OK.
+            state = conn.poll()
+            if state == psycopg2.extensions.POLL_READ:
+                return self.ASYNC_READ_TIMEOUT
+            return self.ASYNC_OK
         else:
             raise psycopg2.OperationalError(
                 "poll() returned %s from _wait_timeout function" % state
