Add waitBarrierMaybe, to speculatively see if you need to wait for a Barrier
Fix newCache to use a blocking pool properly, otherwise you can run into deadlocks