anchor.diff:                  {?ESOCK_TAG, #socket{ref = SockRef}, select, RecvRef} ->
                       if
                           0 < Timeout ->
  +                            %% Retry
                               recv_deadline(
                                 SockRef, Length, Flags, Deadline, Acc);
  -                        0 < byte_size(Acc) ->
  -                            {error, {timeout, Acc}};
                           true ->
  -                            {error, timeout}
  +                            recv_error(Acc, timeout)
                       end;
                   {?ESOCK_TAG, _Socket, abort, {RecvRef, Reason}} ->
  -                    {error, Reason}
  +                    recv_error(Acc, Reason)
               after Timeout ->
                       cancel(SockRef, recv, RecvRef),
  -                    {error, timeout}
  +                    recv_error(Acc, timeout)
               end;
           %%
           {error, ealready = Reason} ->
  
positive.code:       Source     :: sockaddr() | undefined,
        Data       :: binary(),
        SelectInfo :: select_info(),
        Reason     :: term()
                   ; (Socket, BufSz, Timeout) -> 
                        {ok, {Source, Data}} | {error, Reason} when
        Socket     :: socket(),
        BufSz      :: non_neg_integer(),
        Timeout    :: timeout(),
        Source     :: sockaddr() | undefined,
        Data       :: binary(),
        Reason     :: term().
  
  recvfrom(Socket, Flags, Timeout) when is_list(Flags) ->
      recvfrom(Socket, 0, Flags, Timeout);
  
negative.code: -spec listen(Socket, Backlog) -> ok | {error, Reason} when
        Socket  :: socket(),
        Backlog :: integer(),
        Reason  :: inet:posix() | closed.
  
  listen(#socket{ref = SockRef}, Backlog)
    when is_reference(SockRef), is_integer(Backlog) ->
  