Em fluxos Java, é realmente espiada apenas para depuração?

Estou lendo sobre fluxos Java e descobrindo coisas novas à medida que avança. Uma das coisas novas que encontrei foi apeek() função. Quase tudo o que li na espiada diz que deve ser usado para depurar seus Streams.

E se eu tivesse um Stream em que cada Conta tivesse um nome de usuário, um campo de senha e um método de login () e logIn ().

eu também tenho

Consumer<Account> login = account -> account.login();

e

Predicate<Account> loggedIn = account -> account.loggedIn();

Por que isso seria tão ruim?

List<Account> accounts; //assume it's been setup
List<Account> loggedInAccount = 
accounts.stream()
    .peek(login)
    .filter(loggedIn)
    .collect(Collectors.toList());

Agora, até onde sei, isso faz exatamente o que se pretende fazer. Isto;

Leva uma lista de contasTenta fazer login em cada contaFiltra qualquer conta que não esteja logadaColeta as contas conectadas em uma nova lista

Qual é a desvantagem de fazer algo assim? Algum motivo para eu não prosseguir? Por fim, se não esta solução, então o que?

A versão original disso usava o método .filter () da seguinte maneira;

.filter(account -> {
        account.login();
        return account.loggedIn();
    })

questionAnswers(6)

yourAnswerToTheQuestion