Submitted by __141345__, also found by IllIllI, Bnke0x0, SmartSek, d3e4, pashov, Deivitto, bananasboys, joestakey, RedOneN, cryptonue, datapunk, minhquanym, Ch_301, adriro, cccz, peanuts, Tomo, merlin, corerouter, RaymondFam, codexploder, Bnke0x0, KingNFT, carlitox477, Satyam_Sharma, Nyx, 8olidity, cloudjunky, 0xdeadbeef0x, martin, rvierdiiev, and Amithuddar
When withdrawing and refund  ETH, the  contract uses Soliditys transfer() function.
Using Soliditys transfer() function has some notable shortcomings when the withdrawer is a smart contract, which can render ETH deposits impossible to withdraw. Specifically, the withdrawal will inevitably fail when:
Risks of reentrancy stemming from the use of this function can be mitigated by tightly following the Check-Effects-Interactions pattern and using OpenZeppelin Contracts ReentrancyGuard contract. 
The issues with transfer() are outlined here.
For further reference on why using Soliditys transfer() is no longer recommended, refer to these articles.
Using low-level call.value(amount) with the corresponding result check or using the OpenZeppelin Address.sendValue is advised, reference.
kibagateaux (Debt DAO) confirmed
