title: Not sure about nonReentrant guard
body: <p>Is only modifier nonReentrant enought to protect against reetrancy or we still need to check success inside function</p>
  <pre><code>function withdraw() external nonReentrant {
   5        uint256 amount = balanceOf[msg.sender];
   6        balanceOf[msg.sender] = 0;
   7        (bool success, ) = msg.sender.call.value(amount)(&quot;&quot;);
   8        require(success, &quot;Transfer failed.&quot;);
   9    }
  </code></pre>
  <p>or this is enough?:</p>
  <pre><code>function withdraw() external nonReentrant {
   5        uint256 amount = balanceOf[msg.sender];
   6        balanceOf[msg.sender] = 0;
   7        
   9    }
  </code></pre>