Capture o corpo bruto da postagem em express.js

Tentei usar raw-body mas não funcionou quando usado junto com body-parser.

Funcionou bem:

var bodyParser = require('body-parser');
var rawBodySaver = function (req, res, buf, encoding) {
if (buf && buf.length) {
req
.rawBody = buf.toString(encoding || 'utf8');
}
}

app
.use(bodyParser.json({ verify: rawBodySaver }));
app
.use(bodyParser.urlencoded({ verify: rawBodySaver, extended: true }));
app
.use(bodyParser.raw({ verify: rawBodySaver, type: function () { return true } }));

Se um dos middleware bodyParser for aplicado, o próximo não será executado. Se a solicitação não for json nem urlencoded, o analisador bruto irá processá-la.

Isso não funciona para corpos longos:

app.use(function(req, res, next) {
var data = '';
req
.on('data', function(chunk) {
data
+= chunk;
});
req
.on('end', function() {
req
.rawBody = data;
});
next
();
});