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:
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 ...
}