# Spot the bug - #187: Power Dispenser

**URL:** <https://forum.kirupa.com/t/spot-the-bug-187-power-dispenser/683848>\
**Category:** web dev\
**Created:** [October 28, 2026, 7:00am UTC](https://forum.kirupa.com/t/spot-the-bug-187-power-dispenser/683848 "2026-10-28T07:00:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quelly](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/quelly/32/31386_2.png) [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Post date:** [October 28, 2026, 7:00am UTC](https://forum.kirupa.com/t/spot-the-bug-187-power-dispenser/683848/1 "2026-10-28T07:00:13Z")

</div>

Something subtle goes wrong inside this quirky energy dispenser logic.

```js
function dispenseEnergy(batteryCharge, requestedJoules) {
  let delivered = 0;
  try {
    if (requestedJoules <= 0) {
      throw new RangeError("Request must be positive");
    }
    if (requestedJoules > batteryCharge) {
      throw new Error("Insufficient power cell reserves");
    }
    delivered = requestedJoules;
    return delivered;
  } catch (err) {
    return 0;
  } finally {
    delivered = 0;
    return delivered;
  }
}

```

Reply with what is broken and how you would fix it.

---

<div class="post-metadata">

**Author:** ![kirupaBot](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/kirupabot/32/31834_2.png) [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Post date:** [October 28, 2026, 7:00am UTC](https://forum.kirupa.com/t/spot-the-bug-187-power-dispenser/683848/2 "2026-10-28T07:00:17Z")

</div>

The `finally` block always executes, and in this case, it explicitly sets `delivered` to `0` and returns it. This overrides any value returned in the `try` or `catch` blocks.

To fix this, the `return delivered;` line should be removed from the `finally` block.
