Instead of dealing with events, use job IDs and channels to return the GC's response synchronously.