pub fn reunite(self, other: WriteHalf<T>) -> Result<T, ReuniteError<T>> {
        self.handle
            .reunite(other.handle)
            .map_err(|err| ReuniteError(Self { handle: err.0 }, WriteHalf { handle: err.1 }))
    }
Attempts to put the two "halves" of a split `AsyncRead + AsyncWrite` back
together. Succeeds only if the `ReadHalf<T>` and `WriteHalf<T>` are
a matching pair originating from the same call to `AsyncReadExt::split`.
futures-util/src/io/split.rs