Causual consistency guarantees you that if two events are causually related, that everyone will agree on the order that they occurred. It allows disagreement about the ordering of events which are not causually related (or "simultaneous").
Two attempts to purchase an item that are performed by different nodes in the system are probably not going to be causually related - buyer B almost certainly does not try to buy the item because he has seen that buyer A has already bought it. In a causually-consistent system, this means the two events are simultaneous, and different nodes in the system may disagree about their relative ordering - A may believe that her purchase attempt came first and succeeded, and B may believe the same thing.
You can force the two purchase attempts to be causually related with a bit of extra eventual-ness. Instead of having buyers directly purchase the item, have them write a record indicating their desire to purchase the item. Designate a single node to be "owner" of the item. Whenever it sees a desire-to-purchase record, it reads the item's current state and - if it's available - sells it to the given purchaser. Purchasers watch the item to see if it was sold to them or to someone else.
This establishes an ordering between the two events: either the owner sees A's record first and sells it to her, or sees B's record first and sells it to him. The two events aren't causually related so other nodes may see the records in the opposite order, but that's fine - their opinions don't count, only the owner's does. The owner's second read (which should see that item has already been sold) is causually related to its earlier write that marked the item sold since they're executed on the same node, so we're guaranteed that it'll only sell the item once.