Nakonec jsem na to našel řešení. Middleware se nespouštěl, protože musíte použít remove() , save() atd. na instance modelu, nikoli na model samotný.
Příklad:
Customer.remove({...}); nebude fungovat.
Customer.findOne({...}, function(err, customer) {
customer.remove();
});
bude fungovat a udělá vše, co je v Customer.post('remove') .