why is it that people forget flow control?
Every component of interlinked systems that I have every worked on (Including the human-driven ones!) always involves flow control somewhere. In-band or OOB, it's always present.
IMHO, flow control make thing work smoothly, and 'bottleneck' restrictions are easier to identify, as long as you bother to have flow on/off assertions visible somewhere. You can then tweak the setup as required to improve things.
Also, if one is dealing with something synchronous you need to 'Think Synch'...