if you concern the execution speed of this extra, than dont use ::breakforeach, but add breakforeach to global at the proc start. I tested it on real unix and cygwin, execution is about the half (if it matters for 2ms or 4ms ^^).
when I think about it... forget the idea, the foreach loop is long done probably before the first line is seen on the channel.
the only solution would probably be to change the putserv to puthelp (i strongly suggest this) and then make following bind:
bind pub m !stop initforeachbreak
proc initforeachbreak {nick uhost hand chan text} {
clearqueue help
return 1
}
I haven't tested it, but it should wipe all pending messages in the help queue (if you would wipe the server or mode queue, you could kill something important).