The result of Element.prototype.scrollBy is abnormal on Safari with iOS 17.0?

I found an anomaly in the scrolling position when using Element.prototype.scrollBy to scroll DOM elements. For example, when using scrollBy(0, 20) to scroll the element, the scrollTop read immediately after the scroll is completed is the expected 20. However, after adding some delay, it becomes 40. It seems like after scrolling a distance of ‘a’, the scrollTop read after the delay becomes ‘2a’. Below is the minimal case I tried to write.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="wrapper" style="overflow-y: scroll;height: 50px;">
  <div id="scroller" style="height: 200px;">
  </div>
</div>
<script>
  const wrapper = document.getElementById('wrapper');
  wrapper.scrollBy(0, 20)
  console.log(wrapper.scrollTop) // will output 20
  setTimeout(() => {
    console.log(wrapper.scrollTop) // will output 40
  }, 500)
</script>
</body>
</html>