Add configurable callback execution queue

* By default, request event callbacks (blocks) are called on the main queue but they can be overridden
* Cleanup