you can do some combination of offer! and the internal cljs.core.async.impl.dispatch/process-messages, offer the line to the channel, and if the channel can't take the line, run process-messages then loop
offer!
cljs.core.async.impl.dispatch/process-messages