This seems to fix it for me:

```
diff --git a/netty-websockets/src/main/scala/plans.scala b/netty-websockets/src/main/scala/plans.scala
index c95203c..b57eab3 100644
--- a/netty-websockets/src/main/scala/plans.scala
+++ b/netty-websockets/src/main/scala/plans.scala
@@ -79,13 +79,14 @@ trait Plan extends ChannelInboundHandlerAdapter with ExceptionHandler {
               case null =>
                 WebSocketServerHandshakerFactory
                   .sendUnsupportedVersionResponse(ctx.channel)
+                  .addListener(r.underlying.releaser)
               case shaker =>
                 // handle handshake exceptions for the use case
                 // of mounting an http plan on the same path
                 // as a websocket handler
                 catching(classOf[WebSocketHandshakeException]).either {
                   shaker.handshake(ctx.channel, request)
-                    .addListener(new ChannelFutureListener {
+                    .addListeners(new ChannelFutureListener {
                       def operationComplete(hf: ChannelFuture) {
                         val chan = hf.channel
                         attempt(Open(WebSocket(chan)))
@@ -102,7 +103,8 @@ trait Plan extends ChannelInboundHandlerAdapter with ExceptionHandler {
                           "ws-frame-aggregator", new WebSocketFrameAggregator(Integer.MAX_VALUE)
                         )
                       }
-                    })
+                    },
+                    r.underlying.releaser)
                 }.fold({ _ => pass(ctx, request) }, identity)
             }
         }
```

What do you think? Do you want me to add another pull request or should I just push to this branch?