Aleksandr Osipov
А что думаете если у гуарда вот в этих вариантах сделать второй аргумент без объекта? guard(source, {filter: booleanStore}) и guard(source, {filter: predicate})
Ещё думаю, можно было бы сократить запись с Boolean:
guard(source, {filter: Boolean}) guard(source)