I haven't tested this, but I suspect you might not be getting the threading behavior you want. We've got 4 classes in play: the Handler has one Celluloid-enabled Worker (which has one Canvas Activity Proxy) and one Celluloid-enabled Processor. In this PR, the Handler is called by the web application's cache-warmer (but will probably be moved to the background processor at some point).

A call to "activity_feed_future.value" will block the calling thread until the Canvas proxy fetch completes. Since the Handler is NOT Celluloid-enabled, won't this effectively block the cache-warmer thread, and produce the same effect as if neither the Worker nor the Processor were Celluloid-enabled?

If my take is correct, you could get the intended behavior by refactoring a bit to put fetch-plus-processing on a background thread. For example, by passing the Worker or the future to the Processor, rather than the future.value. Or by calling a combined fetch-and-process method async.