(Sorry about breaking the screen width, some lines in the script are unfortunately long.)

I'll be honest, I barely understand you - synchronous advantages? Asynchronous? frown My education in programming/scripting is only hobby level, pretty weak on the jargon. Thanks very much anyway Wims! Your knowledge led me on some interesting Google searches! And I found solution, kinda.

I think Signals would have helped me with my original question: http://www.mircscripts.org/showdoc.php?type=tutorial&id=1305

However I steered away from that monstrous XML script and wrote my own from scratch, learning sockets and such along the way. The script takes i.imgur.com/XXXXX and turns it into i.imgur.com/XXXXX.jpg so you can load the image with one click by using this script: http://sephiroth.bounceme.net/board/viewtopic.php?t=104 I wanted to access the Imgur API instead of blindly appending jpg because the sephiroth link did not animate .gifs. Nearly every variable in the script is dynamically generated, so that way the lines should still load if multiple people post links but one is a bit slow on loading the API. You'll probably need to edit a few things about this script if you want to use it - it includes references to outside variables and channel specific stuff (%dharmaoptions and Destin(y)). Feel free to /query me at the information in my profile.

Code:
; dynamic variables inspired by http://forum.swiftirc.net/viewtopic.php?f=34&t=7969&view=next

;Inspired by BillGreen and http://stackoverflow.com/questions/4867035/how-do-i-change-the-color-of-links-in-mirc/6071100#6071100
;this is actually needed to bypass mIRC's parsing behavior of strtok(str, ":")
alias urlreg return /(\x03\d{1,2}(?:,\d{1,2})?|)(.*?)(((?:(?:https?://)|(?:www\.))(?!\.)\S+\.(?!\.)\S+)|(?:\S+\.(?:com|org|edu|gov|net|tv|uk|cc|xxx|mil|co|us|se|fm|me|de|kr|sv|fr|jp|tk|be|ly|info|biz|us|in|mobi)\S*))/ig
alias imgurReg return /(\x03\d{1,2}(?:,\d{1,2})?|)(.*?)(\S+i\.imgur\.com/[\w]{4,})(\s|$)/ig
alias idreg return /(.*?\S+i\.imgur\.com/)([\w]{4,})|(.*)/ig
alias urlcolor return $+($chr(3), 12, $chr(31), $1-, $chr(3), $chr(31))
alias selfurlcolor return $+($chr(3), 12, $chr(31), $1-, $chr(31), $chr(3), $color(own))

;trigger for the regex event only
on ^&$*:text:$($imgurReg):*:{
  inc %imgurID
  var %n = $calc( $regex($1-, $idreg) - 2 )
  set %imgur. [ $+ [ %imgurID ] $+ [ .Count ] ] %n
  
  ;if we are in a channel, turn nick into @nick if applicable
  set %imgur. [ $+ [ %imgurID ] $+ [ .Nick ] ] $iif($chan, $nick($chan, $nick).pnick, $nick)
  
  ;color all the linkes using the predefined alias above
  set %imgur. [ $+ [ %imgurID ] $+ [ .Msg ] ] $regsubex($1-, $urlreg,\1\2$urlcolor(\3)\1)
  set %imgur. [ $+ [ %imgurID ] $+ [ .Chan ] ] $chan
  set %imgur. [ $+ [ %imgurID ] $+ [ .Color ] ] $cnick($nick).color
  if ( $nick isop $chan ) {
    set %imgur. [ $+ [ %imgurID ] $+ [ .Color ] ] %DharmaOptions.opcolor
    if (destin isin %%imgurNick) {
      set %imgur. [ $+ [ %imgurID ] $+ [ .Color ] ] 4
    }
  }
  
  tokenize 3 $regsubex($1- , $idreg , \2 $chr(3))
  while (%n != 0) {
    set %imgur. [ $+ [ %imgurID ] $+ [ .Url. ] $+ [ %n ] ] [ $eval($($+($,%n)) , 2) ]
    noop $imgur $eval($($+($,%n)) , 2)
    ;inc %imgur. [ $+ [ %imgurID ] $+ [ .SockID. ] $+ [ %n ] ]
    sockopen $+( imgur. [ $+ [ %imgurID ] $+ [ .Url. ] $+ [ %n ] ] ) api.imgur.com 80
    dec %n
  }
  
  ;prevent mIRC's default echo
  haltdef
}

on *:sockopen:imgur.*: {
  sockwrite -nt $sockname GET /2/image/ $+ $eval( $+( %, $sockname) , 2 ) HTTP/1.1
  sockwrite -nt $sockname Host: api.imgur.com
  sockwrite -nt $sockname $crlf
}
on *:sockread:imgur.*: {
  var %read
  sockread %read
  if (*<original>* iswm %read ) {
    var %start = /((http|www)\S*)?imgur\.com/(
    var %mid = %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Url. ] $+ [ $gettok($sockname,4,46) ] ]
    var %end = [^ \t\r\n\x31\x03]{0,5})/g
    set %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Msg ] ] $regsubex( %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Msg ] ] , $+( %start , %mid , %end ) , $regsubex(%read , /.*<original>|</original>.*/sig , \1 ) )
    
    inc %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .final ] ]
    if ( %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .final ] ] ==  %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Count ] ] ) {
      ;print the message, default timestamp, highlighting options, and nick coloring
      echo -tcrl normal $iif( %imgur. [ $+ [ %imgurID ] $+ [ .Chan ] ] , $v1, %imgur. [ $+ [ %imgurID ] $+ [ .Nick ] ] ) $+(<, $chr(3), %imgur. [ $+ [ %imgurID ] $+ [ .Color ] ] , %imgur. [ $+ [ %imgurID ] $+ [ .Nick ] ] , $chr(3), >) %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Msg ] ]
      unset [ $+( %, imgur. , $gettok($sockname,2,46) , * ) ]
    }
    sockclose $sockname
  }
  elseif (*error* iswm %read ) {
    inc %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .final ] ]
    if ( %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .final ] ] ==  %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Count ] ] ) {
      ;print the message, default timestamp, highlighting options, and nick coloring
      echo -tcrl normal $iif( %imgur. [ $+ [ %imgurID ] $+ [ .Chan ] ] , $v1, %imgur. [ $+ [ %imgurID ] $+ [ .Nick ] ] ) $+(<, $chr(3), %imgur. [ $+ [ %imgurID ] $+ [ .Color ] ] , %imgur. [ $+ [ %imgurID ] $+ [ .Nick ] ] , $chr(3), >) %imgur. [ $+ [ $gettok($sockname,2,46) ] $+ [ .Msg ] ]
      unset [ $+( %, imgur. , $gettok($sockname,2,46) , * ) ]
    }
    sockclose $sockname
  }
  ;also need on a fail, like after 30 seconds, it prints the text regardless of sock success
}