pub fn reunite(self, other: SplitStream<S>) -> Result<S, ReuniteError<S, Item>> {
        self.lock.reunite(other.0).map_err(|err| ReuniteError(SplitSink(err.0), SplitStream(err.1)))
    }
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