anchor.diff:        Timeout :: timeout(),
         Source  :: sockaddr() | undefined,
         Data    :: binary(),
  -      Reason  :: term().
  +      Reason  :: errcode() | closed | timeout.
   
   recvfrom(#socket{ref = SockRef} = Socket, BufSz, Flags, Timeout)
     when is_reference(SockRef),
  
positive.code:                             {error, {timeout, bincat(Acc, Bin)}}
                      end;
                  {?ESOCK_TAG, _Socket, abort, {RecvRef, Reason}} ->
                      {error, Reason}
              after Timeout ->
                      cancel(SockRef, recv, RecvRef),
                      {error, {timeout, bincat(Acc, Bin)}}
  
negative.code:       Dest       :: sockaddr(),
        Flags      :: send_flags(),
        SelectInfo :: select_info(),
        Reason     :: {errcode() | closed,
                       Remaining :: pos_integer()};
  
              (Socket, Data, Dest, Flags, Timeout) -> ok | {error, Reason} when
        Socket     :: socket(),
        Data       :: binary(),
        Dest       :: sockaddr(),
        Flags      :: send_flags(),
        Timeout    :: timeout(),
        Reason     :: {errcode() | closed | timeout,
                       Remaining :: pos_integer()}.
  
  sendto(Socket, Data, Dest, Flags, Timeout) when is_list(Data) ->
      Bin = erlang:list_to_binary(Data),
  