pub fn reunite<Item>(self, other: SplitSink<S, Item>) -> Result<S, ReuniteError<S, Item>>
    where
        S: Sink<Item>,
    {
        other.reunite(self)
    }
Attempts to put the two "halves" of a split `Stream + Sink` back
together. Succeeds only if the `SplitStream<S>` and `SplitSink<S>` are
a matching pair originating from the same call to `StreamExt::split`.
futures-util/src/stream/stream/split.rs