code: function processOrCacheAsync(sourceText, moduleId, options, opt_url, callback) {
    if (ENABLE_CACHING) {
      var sourceHash = stringHash(sourceText);
      var resultText = loadFromCache(sourceHash);
      if (resultText) {
        callback(fixupModuleIds(moduleId, resultText));
        return;
      }
    }
  
    var blobUrl = options['wtf.instrumentation.blob'];
    var worker = new Worker(blobUrl);
    worker.onmessage = function(e) {
      var resultText = e.data.transformedText;
      if (ENABLE_CACHING) {
        saveToCache(sourceHash, resultText);
      }
      callback(fixupModuleIds(moduleId, resultText));
      worker.terminate();
    };
    worker.postMessage({
      sourceText: sourceText,
      moduleId: moduleId,
      options: options,
      url: opt_url
    });
  }
docs: Processes source code for instrumentation, with caching if possible.
  @param {string} sourceText Input source text.
  @param {number} moduleId Unique module ID.
  @param {!Object} options Instrumentation options.
  @param {string=} opt_url Source URL.
  @param {function(string)} callback Completion callback.