diff --git a/driver/src/main/java/org/kaazing/k3po/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java b/driver/src/main/java/org/kaazing/k3po/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
index <HASH>..<HASH> 100644
--- a/driver/src/main/java/org/kaazing/k3po/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
+++ b/driver/src/main/java/org/kaazing/k3po/driver/internal/ext/tls/bootstrap/TlsClientChannelSink.java
@@ -318,13 +318,18 @@ public class TlsClientChannelSink extends AbstractChannelSink {
                 @Override
                 public void operationComplete(ChannelFuture future) throws Exception {
                     if (tlsClientChannel.setWriteClosed()) {
-                        shutdownOutputOrClose(transport);
                         fireChannelDisconnected(tlsClientChannel);
                         fireChannelUnbound(tlsClientChannel);
                         fireChannelClosed(tlsClientChannel);
                     }
                 }
             });
+            tlsHandler.getSSLEngineInboundCloseFuture().addListener(new ChannelFutureListener() {
+                @Override
+                public void operationComplete(ChannelFuture future) throws Exception {
+                    shutdownOutputOrClose(transport);
+                }
+            });
             chainFutures(tlsCloseFuture, tlsFuture);
         }
     }
Tls closes underlying connection on TLS handshake close