I've been using BLHeli passthrough successfully lots of times. Not with the Revo, but that shouldn't make a difference, since serial pads do hook up directly to the MCU, maybe with an inline resistor on some controllers.
The semaphore timeout thing seems to be ESC dependent. Of the four ESCs on my quad, one is always causing trouble during firmware flashing and aborting, with exactly that error. Thankfully, the BLHeli_32 bootloader lets me do over. The other three ESCs work just fine however. I'm not sure if it's a wiring issue or the ESC is whacked, but after multiple flashing attempts, it eventually succeeds, and it appears to work correctly in flight.