I love Varnish. Mostly for ESI feature but also for Collapsed Forwarding feature which is enabled by default.
That "by-default" feature enhance the following scenario:
Only one request at a time will be allowed to populate a new cache element while other requests of the same cache element will either wait for a response to appear in the cache.
Most of my php stacks are driven by php-fpm via Nginx. I was bored installing Varnish each time, even when ESI was not required, so I searched for an alternative which seems to be implemented in Nginx to deliver the same feature.
#enable collapsed forwarding since 1.1.12 fastcgi_cache_lock on;
You can find more informations here