pub(super) fn split<S: Stream + Sink<Item>, Item>(
    s: S
) -> (SplitSink<S, Item>, SplitStream<S>)