figure out the tricky core.async issue