There should be some lead-in to this example. Something like: "Use >! and <! inside a go loop to asynchronously do work" (Of course, this will be really difficult to write well :wink:)

Beyond that, I think the example might be a little too contrived. There is enough new syntax going on I think it will be really hard to grok what is going on. What if you had a small function that simulated a service, and showed how it was used in a coupled fashion–an introduction of sorts. After that, you could instruct the reader to use core.async to decouple those fake components.

Regardless, it'd be nice to make-pretend with consumers/producers that have some sort of real world analogue over "a" and "b". Something as simple as "primary-datastore" and "cache-datastore" but work for illustrative purposes. (Idea brewing: do an `alts!` call on cache and primary datastores, populate cache from primary if the cache is stale?)