pub fn take_future(&mut self) -> Option<Fut> {
        if self.fut.is_some() {
            self.free = true;
        }

        self.fut.take()
    }
Extract the stopping future out of the combinator.
The future is returned only if it isn't resolved yet, ie. if the stream isn't stopped yet.
Taking out the future means the combinator will be yielding
elements from the wrapped stream without ever stopping it.
futures-util/src/stream/stream/take_until.rs