// @flow export default function debounce(fn: Function): () => Promise { let pending; return () => { if (!pending) { pending = new Promise(resolve => { Promise.resolve().then(() => { pending = undefined; resolve(fn()); }); }); } return pending; }; }