Skip items in an iterable until the passed predicate matches, then yield all items in the iterable
function skipUntil(predicate) {
    return function (iterable) {
        return __asyncGenerator(this, arguments, function* () {
            var e_18, _a;
            let i = 0;
            let canReturn = false;
            try {
                for (var iterable_16 = __asyncValues(iterable), iterable_16_1; iterable_16_1 = yield __await(iterable_16.next()), !iterable_16_1.done;) {
                    const item = iterable_16_1.value;
                    if (!canReturn) {
                        canReturn = yield __await(predicate(item, i));
                        if (canReturn) {
                            yield yield __await(item);
                        }
                        i = i + 1;
                    }
                    else {
                        yield yield __await(item);
                    }
                }
            }
            catch (e_18_1) { e_18 = { error: e_18_1 }; }
            finally {
                try {
                    if (iterable_16_1 && !iterable_16_1.done && (_a = iterable_16.return)) yield __await(_a.call(iterable_16));
                }
                finally { if (e_18) throw e_18.error; }
            }
        });
    };
}