Obtener el cuerpo de la solicitud de http.IncomingMessage de node.js

Estoy intentando implementar un punto final HTTP simple para una aplicación escrita en node.js. He creado el servidor HTTP, pero ahora estoy atascado al leer el cuerpo del contenido de la solicitud:

http.createServer(function(r, s) { console.log(r.method, r.url, r.headers); console.log(r.read()); s.write("OK"); s.end(); }).listen(42646); 

El método, la URL y los encabezados de la solicitud se imprimen correctamente, pero r.read() siempre es NULL. Puedo decir que no es un problema en la forma en que se realiza la solicitud, porque el encabezado de content-length es mayor que cero en el lado del servidor.

La documentación dice que r es un objeto http.IncomingMessage que implementa la interfaz de la secuencia de lectura, ¿por qué no funciona?

Ok, creo que he encontrado la solución. La secuencia r (como todo lo demás en node.js, stupid me …) debe leerse de forma asíncrona basada en eventos:

 http.createServer(function(r, s) { console.log(r.method, r.url, r.headers); var body = ""; r.on('readable', function() { body += r.read(); }); r.on('end', function() { console.log(body); s.write("OK"); s.end(); }); }).listen(42646);