As I understand you use this `NetworkDoneRequestToken` entity as an adapter to have ability to return token, right?

If it's so, it may be easier to use `NetworkDoneListener` and add something like `getRequestToken` method to the `Service` class. It will allow you to avoid of creating an hierarchy for listeners. Not a best solution though.

One more way to improve this you may take into consideration, since you're using C++11, is to return `std::promise`.