Adding raw body to request before it is parsed

PayPal's IPN verification fails if req.body is passed in some scenarios (where there is a transaction array). Storing the raw body on the request object before it is parsed allows PayPal's IPN verification to succeed. See https://github.com/andzdroid/paypal-ipn for the IPN verification library I'm using and this outstanding issue describing the erroring scenario: https://github.com/andzdroid/paypal-ipn/issues/6.

It may be possible to use the body-parser options as is to fix the problem outlined here, but this solution solves the problem without requiring any code changes for people using middleware like: 
app.use(bodyParser());

The code to verify an IPN now looks something like this:
var qs = require('querystring');
var PayPalIPN = require('paypal-ipn');
var parsedRawBody = qs.parse(req.rawBody);
PayPalIPN.verify(parsedRawBody, function(err, msg){...})