I think by:

> [...] deregistering callbacks [...]

You meant:

> [...] deregistering an `AsyncListener` [...]

Since "callbacks" feels like the callbacks passed to the asynchronous events that will fire in the future.

Feel slight confusion on the line:

> [...] does not remove them from handles in flight, only they won't be added to any newly created handles.

Because I feel like that implies that the `AsyncListener` callbacks will not fire on any further creations of the asynchronous call stack on the handles where it was initially registered. When in fact the callbacks will continue to fire for all asynchronous "events" that originate from the handle which the `AsyncListener` had been added, before having been removed from the `activeContext` and the `contextStack`.

Maybe something like the following:

> An active `AsyncListener` (i.e. passed to `tracing.addAsyncListener()`) is attached to an asynchronous handle, when the handle is created. Removing the `AsyncListener` simply prevents it from being added to any additional handles within the asynchronous scope where it was removed. Though this does not prevent the `AsyncListener` from propagating along the asynchronous call stack along the handle on which it was attached. For example:

```javascript
var tracing = require('tracing');
var addAL = tracing.addAsyncListener;
var removeAL = tracing.removeAsyncListener;

// The AsyncListener will now begin to attach to any
var listener = addAL(callbacksObj);
setTimeout(function() {
  process.nextTick(function() {
    throw new Error('this will be caught');
  });
  setImmediate(function() {
    removeAL(listener);
    process.nextTick(function() {
      throw new Error('this will not be caught');
    });
    throw new Error('this will not be caught');
  });
  throw new Error('this will be caught');
});
```