dispatch Async
Dispatch from any thread (e.g. a mixin on the netty/packet thread): marshalled onto the JS thread, so it's observe-only (the originating call has already proceeded — no inline cancel). Cheaply skips work when no script listens for type, so high-volume sources (packets) are free until something registers.