export default function throttle(fn, threshhold = 250, scope) {
	let last;
	let deferTimer;

	const _throttle = (...args) => {
		const context = scope || this;

		const now = +new Date();

		if (last && now < last + threshhold) {
			// hold on to it
			clearTimeout(deferTimer);
			deferTimer = setTimeout(() => {
				last = now;
				fn.apply(context, args);
			}, threshhold);
		} else {
			last = now;
			fn.apply(context, args);
		}
	};

	_throttle.stop = () => clearTimeout(deferTimer);

	return _throttle;
}