Your example is a perfect bug of what it's failing to do! Thank you for your feedback. The problem there is that it's doing a shallow merge; that is to say msg.payload is getting overwritten with a single property each time. Therefore the internal buffer is only containing msg.payload.first_name or msg.payload.last_name but not (Schrödinger's cat aside) both at the same time.
Had it been (sans payload) msg.first_name and msg.last_name that would have worked.
I've now implemented a deep merge routine that should provide the expected results and will now work with your example. Please see node-red-emerge version 1.2.0.
Thank you for your feedback!