Thanks that was a well written explanation, it makes much more sense now.
I read the help for [block~] about the catch~/throw~ 'weirdness'. And although it says... "Patches using send~/receive~ or throw~/catch~ to intercommunicate must have the same blocking..." ...If I create a patch with [throw~ X] and [catch~ X] and [block~ 4] (all in the *same* patch, so presumably with the *same* blocking) I still get an output saying "error: throw~ test: vector size mismatch" How bizarre and frustrating!
K