Because you are using JobDone by itself instead of Wait For. In your for next loop, you are firing off getFBTopic calls irregardless if the previous call to getFBTopic finished the call to whatever you are calling (jRDC2?). So the code is doing the following (and the logs reflect it)
1) result.tag = "not sent"
2) For each record returned:
2a) Log "Gotcha" and other info
2b) Call method getFBtopic(MyCity)
2c) Go to 2
This will finish (the looping of 2) before any calls are made to your JobDone routine where the tag is set to"get fbtopic". Why? Because the calls happen asynchronously. If you would use Wait For, you can actually synchronize your asynchronous calls and achieve the results you want. You can also use some global variables and ensure that you only make one call to getFBtopic(MyCity) and not make another until you have successfully processed a JobDone routine where the tag is set to "get fbtopic". You probably are not going to get support for this method from this forum.