Well, as long as an encoder produces something, it has no overhead, so I think it should be fine in most cases.  The real problem though is that it is still possible to notify the promise without a message too early.  For example, the previous handler can write something before the encoder handles the promise without a message.  Then, the promise of the data written by the previous handler will be notified later than the promise without a message.  So, my proposed solution doesn't fix everything.