Erlang: evitar la condición de carrera con gen_tcp: control_process

Estoy implementando un servidor TCP simple con la siguiente secuencia:

{ok, LS} = gen_tcp:listen(Port,[{active, true}, {reuseaddr, true}, {mode, list}]),
{ok, Socket} =  gen_tcp:accept(LS),
Pid = spawn_link(M, F, [Socket]),           
gen_tcp:controlling_process(Socket, Pid) 

El uso de la opción {activo, verdadero} podría causar una condición de carrera donde un nuevo paquete llega al proceso del socket antes de que se llame al "control_process", lo que resultaría en que el mensaje {tcp, Socket, Data} llegara al proceso padre en lugar del niño.

¿Cómo podría evitarse esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta