Even if the device is returning busy everywhere, I don’t believe Dial makes a distinction between that and busy here. If the device is giving busy here, then it is correct to continue ringing the other devices.
Multiple devices on a single endpoint simply results in a Dial call with multiple destinations. Dial doesn’t know that they belong to a single endpoint.
The Asterisk core has no AST_CONTROL_xxxx message for busy everywhere. There also doesn’t seem to be an AST_CAUSE_xxxx code for busy everywhere (these codes are basically taken from ISDN networks).
Dial() tracks failed outbound legs purely using the AST_CONTROL_xxxx messages and cause values. Getting one of these for busy simply increments the busy destination count and closes that destination. The other legs continue. The busy count is is used to decide what status to report when all the legs have failed.
The only way that FreePBX could abort the whole call if one destination was busy is by calling Dial for just that destination, and then checking for busy, rather than no answer. The follow me logic might be adaptable to that, but the multiple endpoint contact logic is not.