anchor.diff:                     ok = api_a_send_and_recv_tcp(InitState)
              end).
   
  +
  +
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +
  +%% Basically send and receive using the msg functions (sendmsg and recvmsg)
  +%% on an IPv4 TCP (stream) socket. But we try to be async. That is, we use
  +%% the 'nowait' value for the Timeout argument (and await the eventual
  +%% select message). Note that we only do this for the recvmsg,
  +%% since its much more difficult to "arrange" for sendmsg.
  +%% We *also* test async for accept.
  +api_a_sendmsg_and_recvmsg_tcp4(suite) ->
  +    [];
  +api_a_sendmsg_and_recvmsg_tcp4(doc) ->
  +    [];
  +api_a_sendmsg_and_recvmsg_tcp4(_Config) when is_list(_Config) ->
  +    ?TT(?SECS(10)),
  +    tc_try(api_a_sendmsg_and_recvmsg_tcp4,
  +           fun() ->
  +                   Send = fun(Sock, Data) ->
  +                                  MsgHdr = #{iov => [Data]},
  +                                  socket:sendmsg(Sock, MsgHdr)
  +                          end,
  +                   Recv = fun(Sock) ->
  +                                  case socket:recvmsg(Sock, nowait) of
  +                                      {ok, #{addr  := undefined,
  +                                             iov   := [Data]}} ->
  +                                          {ok, Data};
  +                                       {ok, _} = OK ->
  +                                          OK;
  +                                     {error, _} = ERROR ->
  +                                          ERROR
  +                                  end
  +                          end,
  +                   InitState = #{domain => inet,
  +                                 send   => Send,
  +                                 recv   => Recv},
  +                   ok = api_a_send_and_recv_tcp(InitState)
  +           end).
   
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
positive.code:     [
       api_a_sendto_and_recvfrom_udp4,
       api_a_sendmsg_and_recvmsg_udp4,
       api_a_send_and_recv_tcp4%%,
       %% api_a_sendmsg_and_recvmsg_tcp4
      ].
  
  api_options_cases() ->
  
negative.code: %% the 'nowait' value for the Timeout argument (and await the eventual
  %% select message). Note that we only do this for the recv,
  %% since its much more difficult to "arrange" for send.
  %% We *also* test async for accept.
  api_a_send_and_recv_tcp4(suite) ->
      [];
  api_a_send_and_recv_tcp4(doc) ->
      [];
  api_a_send_and_recv_tcp4(_Config) when is_list(_Config) ->
      ?TT(?SECS(10)),
      tc_try(api_a_send_and_recv_tcp4,
             fun() ->
                     Send = fun(Sock, Data) ->
                                    socket:send(Sock, Data)
  