If you can use GetMsg() to get the ioreq reply then the iorequest has already terminated. Most of the time WaitIO should be used to remove the ioreq msg from the port though.
However, as long as the iorequest is used at least once it should be safe to AbortIO() + WaitIO() always (AbortIO doesn't do anything if the iorequest has already terminated).