Note: need to probably address this in writeChannelNonblocking, as well.
I don't fully understand what's going on here, but my intuition is that
somehow the combination of `forever` and `writeChannel` wasn't tail
recursive, and so stack space was being built-up. By registering the
writer with the scheduler, and letting the stack unwind (I think...),
this seems to fix the issue.