Outgoing writes may be discarded when a connection is closed. For instance, when running a producer with acks=0, a producer that writes data and closes the producer would expect to see all writes to complete if there are no errors. But close() simply closes the channel and socket which could result in outgoing data being discarded.
This is also an issue in consumers which use commitAsync to commit offsets. Closing the consumer may result in commits being discarded because writes have not completed before close().