===== ISTEM =====
Solve the following programming task.

TASK: Throttle Wrapper

Write a function 'throttle(fn, limit)' that wraps a function fn so that it runs at most once per limit milliseconds.

STARTER CODE (javascript):
function throttle(fn, limit) {
  // Write your code here
}

module.exports = { throttle };


RULES:
- Keep the function name and signature EXACTLY as given.
- Return working code only. No explanations.
- Put the code in a single ``` block.
- Try to solve it first. If you genuinely cannot, write only this single
  line instead of producing faulty code: CANNOT_SOLVE

===== HAM YANIT =====
```javascript
function throttle(fn, limit) {
  let lastExec = 0;
  let timeout = null;

  return function (...args) {
    const context = this;
    const now = Date.now();

    const exec = () => {
      lastExec = Date.now();
      timeout = null;
      fn.apply(context, args);
    };

    if (now - lastExec >= limit) {
      if (timeout) {
        clearTimeout(timeout);
        timeout = null;
      }
      exec();
    } else if (!timeout) {
      timeout = setTimeout(exec, limit - (now - lastExec));
    }
  };
}

module.exports = { throttle };
```