When the boolean value in Wscript.Shell's Run() is set to true mIRC should wait... not sure why it isn't!

You could possibly try combining Chessnut's method with yours:

Code:
alias workaround {
  if ($com(a)) .comclose a
  .comopen a MSScriptControl.ScriptControl
  noop $com(a,Language,4,bstr,VBScript)
  noop $com(a,ExecuteStatement,1,bstr, $&
    set objWSH = CreateObject("WScript.Shell") $crlf $& 
    objWSH.Run( $+ $qt($mircdirtest\pstat.vbs) $+ ,0,true))
  var %result = $com(a).result
  .comclose a
  window -nh @MI-WebGet
  filter -fwc $qt("test\pstats2.txt") @MI-WebGet *
  :error | reseterror | %s = $null
  if ($com(a)) { .comclose a }
  :end | return %s
}