diff --git a/src/pytds/tls.py b/src/pytds/tls.py
index <HASH>..<HASH> 100644
--- a/src/pytds/tls.py
+++ b/src/pytds/tls.py
@@ -144,11 +144,16 @@ def establish_channel(tds_sock):
             conn.do_handshake()
         except OpenSSL.SSL.WantReadError:
             logger.debug('got WantReadError, getting data from the write end of the TLS connection buffer')
-            req = conn.bio_read(BUFSIZE)
-            logger.debug('sending %d bytes of the handshake data to the server', len(req))
-            w.begin_packet(tds_base.PacketType.PRELOGIN)
-            w.write(req)
-            w.flush()
+            try:
+                req = conn.bio_read(BUFSIZE)
+            except OpenSSL.SSL.WantReadError:
+                # PyOpenSSL - https://github.com/pyca/pyopenssl/issues/887
+                logger.debug('got WantReadError again, waiting for response...')
+            else:
+                logger.debug('sending %d bytes of the handshake data to the server', len(req))
+                w.begin_packet(tds_base.PacketType.PRELOGIN)
+                w.write(req)
+                w.flush()
             logger.debug('receiving response from the server')
             resp = r.read_whole_packet()
             # TODO validate r.packet_type
Ignore second WantReadError in establish_channel (#<I>)

This change is to fix an issue with authenticating to Azure Data Warehouse reported in issue #<I>