Not in the middle as you suggest, exactly. Whether you use the same alias with a switch to go to a certain point, or a completely new alias is up to you. You'll lose any temporary vars and probably event-specific identifiers when you return from the first call - so you'll need to save any data before that.

Here's a very rough structure:

Code:
alias myalias {
  if ($1 == whois-raw) goto whois-raw
  ...
  set %checking-whois-raw %nick
  whois %nick
  return
  :whois-raw
  ...
}

raw *whatever*:*:{
  if (%checking-whois-raw != %nick) return
  myalias whois-raw ...
}