anchor.diff:  'CLIENT'(Msg, Pipe, #fsm{stream = Stream} = State) ->
      try
         {Pckt, Send} = htstream:encode(Msg, Stream#iostream.send),
  -      pipe:b(Pipe, Pckt),
  +      pipe:b(Pipe, {packet, Pckt}),
         {next_state, 'CLIENT', State#fsm{stream = Stream#iostream{send = Send}}}
      catch _:Reason ->
         % ?NOTICE("knet [ws]: failure ~p ~p", [Reason, erlang:get_stacktrace()]),
  
positive.code: 'ESTABLISHED'({packet, Msg}, Pipe, State) ->
     case ws_send(Msg, Pipe, State#fsm.stream) of
        {eof, Stream} ->
           {stop, normal, State#fsm{stream=Stream}};
        {_,   Stream} ->
           {next_state, 'ESTABLISHED', State#fsm{stream=Stream}}
     end;
  
  
negative.code:  when ?is_transport(Prot), is_binary(Pckt) ->
     try
        case htstream:decode(Pckt, Stream#iostream.recv) of
           {[{101, Msg, Head}], Http} ->
              <<"Upgrade">>   = lens:get(lens:pair(<<"Connection">>), Head),
              <<"websocket">> = lens:get(lens:pair(<<"Upgrade">>), Head),
              pipe:b(Pipe, {ws, self(), {101, Msg, Head}}),
  