If the send fails, don't we hit COMPLETED?  Maybe we just jump straight to TERMINATED?

Actually, shouldn't this cleanup code be in TERMINATED anyway?  (And then my original point stands.)