HookError for Multiple Contributions from Same Wallet to Crowdfunding Example

I noticed that modifying the crowdfunding example so that a wallet makes two contributions instead of one results in an exception because the endpoint can no longer be found for the second contribution: HookError (EndpointNotActive (Just (Wallet {getWallet = 3})) (EndpointDescription {getEndpointDescription = "contribute"})).

One can cause this by duplicating the line makeContribution w3 (Ada.lovelaceValueOf 10) in
plutus/Crowdfunding.hs at 60391c0925d89f95c9810887ed91d50aa895e580 · input-output-hk/plutus · GitHub, for example. I created another example of the error at Bitbucket.

How would one alter the example so that a wallet could make two contributions to the same campaign?

FYI: This type of error no longer occurs in the recent versions of Plutus.