When the final factors get materialized, both `users` and `products` are called:
~~~
val usersOut = unblockFactors(users, userOutLinks)
val productsOut = unblockFactors(products, productOutLinks)
~~~
However, the last `users` depends on the last `products`. So the last `products` will be used twice.