anchor.diff:  
   WARNING: Be very careful about the implementation of these functions. They will be invoked often and can result in significant performance issues. Calling function that are async from these callbacks can result in an infinite loop
   
  +[[asynctrackerremovelistenerlistenername]]
   ==== asyncTracker.removeListener(listenerName)
   
   Prevents the `listenerObj` associated with `listenerName` from being associated with any future async callbacks or objects. Any async callbacks or objects already associated with the listener will continue to trigger.
  
positive.code: ** `fName`: A name of the function that scheduled the callback.
  ** `cbId`: Unique ID of this callback
  ** `fData`: If the listener specified interest in function arguments, `fData` will contain a map of the significant arguments
  * `invokeDeferred(fName, cbId, next)`: A function can intercept the invocation of an async callback. This function behaves similar to Express middleware and you must call `next()` to continue invocation of the callback.
  
  Other libraries can use this call to run their own code before and after function execution. They may also choose to wrap the function invocation in a try/catch/finally block to catch and handle exceptions.
  ** `fName`: A name of the function that scheduled the callback.
  ** `cbId`: Unique ID of this callback
  ** `next`: The callback function to execute
  
negative.code: 
  The AsyncTracker object is exposed as a global variable named `asyncTracker`.
  
  [[asynctrackeraddlistenerlistenerobj-name]]
  ==== asyncTracker.addListener(listenerObj, [name])
  
  `name`: Optional. Listener name for the new listener, or an existing listener which should be replaced.
  