Code:
on *:SOCKREAD:socketname:{
  if ($sockerr) return
  var %data
  sockread %data
  while ((!$sockerr) && ($sockbr)) {
    ; ... echo -s read $v1 bytes: %data
    if (%data == stophere) return
    if (sometimes isin %data) {
      ; ...
    }
    sockread %data
  }
}

IMHO about the only not-so-bad use of goto would be a 'SELECT' or 'CASE' statement until it's included in mIRC. Using combinations of if and while is usually more understandable for yourself or other coders reading your script.