Maybe I should move the accounting to AbstractChannel.unsafe?