Failed withdrawals from VUSD#processWithdrawals will be lost forever
When withdrawals fail inside VUSD#processWithdrawals they are permanently passed over and cannot be retried. The result is that any failed withdrawal will be lost forever.\\nVUSD.sol#L75-L81\\n```\\n        (bool success, bytes memory data) = withdrawal.usr.call{value: withdrawal.amount}("");\\n        if (success) {\\n            reserve -= withdrawal.amount;\\n        } else {\\n            emit WithdrawalFailed(withdrawal.usr, withdrawal.amount, data);\\n        }\\n        i += 1;\\n```\\n\\nIf the call to withdrawal.usr fails the contract will simply emit an event and continue on with its cycle. Since there is no way to retry withdrawals, these funds will be permanently lost.
Cache failed withdrawals and allow them to be retried or simply send VUSD to the user if it fails.
Withdrawals that fail will be permanently locked
```\\n        (bool success, bytes memory data) = withdrawal.usr.call{value: withdrawal.amount}("");\\n        if (success) {\\n            reserve -= withdrawal.amount;\\n        } else {\\n            emit WithdrawalFailed(withdrawal.usr, withdrawal.amount, data);\\n        }\\n        i += 1;\\n```\\n