and one probleam is that:
if the handler actor is stopped by an exception,If the user is not keep the handler actor be safe,then a Terminated message will be found,and here we stop the channel .
and then on the channel callback :
```
 if (!shutdown)
    webSocketActor ! PoisonPill
```
we will send the PoisonPill to the handler actor again,so will then deliver this message to dead letter.
I think we should stop ourself too via context.stop ,If we detected the child is stopped.we could stop the supervisor and close the channel.
so here comes that 
```
1,client close the webscoket
   1.1 send the poisionPill to handler actor
   1.2  handle the Terminate message ,and close the channel,then stop self.
2,handler actor stoped by exception
   2.1 set the new tag exception to true on the strategy case block.
   2.2 handle the Terminate message ,and close the channel,in the  enumerator callback don't need to send the PoisionPill to the handler actor cause the actor has been stopped by supervisor strategy,then stop self.
3,closed by shutdown
   3.1 just as it is now.
4,handler stop upstream and client close websocket
  4.1 hit the race condition

What I added here just note that the handler may  be stopped by the supervisor strategy,and we may avoid to send it an PoisionPill message once it has been stopped,and we may want to stop the ourself too cause there is no new child actor to handle the incoming message again,cause we choose the stop but not restart strategy.

if we don't stop ourself will cause the supervisor actor alive.
there are so many condition need to concern about.

all in one:We need to send the PoisionPill message to child actor only the client close the websocket,and don't need to when by superversion shutdown or handler actor has been stopped,and when the child/handler actor has been stopped via we notice the Terminate message,we need to close the channel and stop ourself via context.stop,for the race condition,still there.