Dmitry-H87, мой комментарий должен был подтолкнуть вас в сторону размышлений о том, что на клиенте нет никаких таймаутов. Они могут быть на сервере, причем, не всегда там где вы их ожидаете.
Ну, для начала:
Вы можете создать коллекцию CartProduct (BasketItem/etc) и наполнить ее из Product с добавлением количества из корзины и чего-либо еще.