anchor.diff:              {error, Reason}
       end.
   
  -
  --spec recv(handle(),non_neg_integer(),boolean()) -> {ok,binary(),handle()}|{error,_}.
  +-spec recv(handle(),non_neg_integer()|binary:cp(),boolean())
  +          -> {ok,binary(),handle()}|{error,_}.
   recv(#handle{buf=B,start=S,length=L}=H, 0, _Compress) ->
       {ok, binary_part(B,S,L), H#handle{buf = <<>>, start = 0, length = 0}};
  -recv(#handle{buf=B,start=S,length=L}=H, Length, false)
  -  when L >= Length ->
  -    {ok, binary_part(B,S,Length), H#handle{start = S+Length, length = L-Length}};
  -recv(Handle, Length, Compress) ->
  -    case recv(Handle) of
  -        {ok, Packet, #handle{buf=B,start=S,length=L}=H} ->
  -            R = binary_part(B, S, L),
  -            recv(H#handle{buf = <<R/binary,Packet/binary>>,
  -                          start = 0, length = L+byte_size(Packet)}, Length, Compress);
  -        {error, Reason} ->
  -            {error, Reason}
  -    end.
  +recv(Handle, Term, false)
  +  when is_integer(Term) ->
  +    recv_binary(Handle, Term);
  +recv(Handle, Term, false) ->
  +    recv_text(Handle, Term).
   
   -spec send(handle(),binary(),boolean()) -> {ok,handle()}|{error,_}.
   send(Handle, Binary, Compress) ->
  
positive.code:     H#handle{zseqnum = N}.
  
  %% == internal ==
  
  send(#handle{socket=S,maxlength=M,seqnum=N}=H, Binary, Start, Length, false)
    when M >= Length ->
  
negative.code:         {ok, <<L:24/little,N>>, S1} ->
              case baseline_socket:recv(S1, L, T) of
                  {ok, Packet, S2} ->
                      {ok, Packet, H#handle{socket = S2, seqnum = N+1,
                                            buf = <<>>, start = 0, length = 0}};
                  {error, Reason} ->
                      {error, Reason}
              end;
  