RE: issues with this -- please see the other comments I made.

RE: consolidating EngineWorker and CachingReaderWorker -- it's nice to have a general mechanism for queuing work to be run after the callback and it comes at no performance cost.