channel.close can throw, right? Which would make this a zombie (if it isn't closed)?