Allow passing specific PROVIDERs to AsyncListener callbacks

This allows user to pass specific "providers" to `{add,create}AsyncListener()` which will allow them to track only specific operations.

While the functionality is working now, I'm sure a lot of fine tuning will be done as users get their hands on it.