I agree with @stdweird.  Here's another example.  On Solaris, I want to use `CAF::Service` to asynchronously enable a service, then while it is busy starting up do some more unrelated tasks, then I want to use my `CAF::Service` object again to check that my service is now running.