I recently faced an issue when using Sink to send websocket messages.
I used sink.with in order to modify the msg before actually sending it. The items are not buffered which caused some messages being lost.
https://github.com/rust-lang-nursery/futures-rs/blob/e9cd539cc977fda701f6f4679ee435fa66986ed8/futures-util/src/sink/with.rs#L171
I'm not sure if I understand the purpose of with correctly, but I think it should buffer the items when calling start_send instead of replacing the old ones.