The problem with your code is that you are using a variable that is too generic, and not uniquely identifiying the specific request.
Let's illustrate this:
Ricky does !serverstatus, which makes %target be Ricky.
Right after that, FOP does !serverstatus, which makes %target be FOP.
The sockopen event is triggered in an undefined number of seconds, depending on how long it takes mIRC (Windows actually) to make a connection to the host (if at all.)
Now the sockopen event is triggered, and it is uncertain who the %target will be. It is very possible that the query that Ricky did will end up being messaged to FOP, if Ricky's query took 5 seconds, and FOP did a query only 3 seconds after Ricky did. On top of that, if this occurs, FOP won't even get his original request, because %target is unset, which results in an error on the person hosting this script as there are insufficient parameters.
That's the reason I use a unique socket name ($ticks + $r(1111,9999)) and sockmark this name with the target, so that there could never be any such issue.
In other words, your current version does not accomodate simultaneous lookups.