I think I understand now. I am not sure what the Go'ish way to do this is.
On the one hand, "panics aren't supposed to cross package boundaries" but
on the other hand, stopping a request and allowing it to continue on the
instruction just after the call to Done() was executed... that seems
potentially scary, because it might cause odd side effects. I think it
might be simpler to just panic or not panic, and let the caller be
responsible for recovering if they want to. This might be something we
should ask for opinions about, though. So let's leave it as-is and when we
publicize this via blog/mailinglist, we can ask for input.