Skip to content

Instantly share code, notes, and snippets.

@simongregory
Created June 21, 2017 13:37
Show Gist options
  • Save simongregory/2c60d270006d4bf727babca53dca1f87 to your computer and use it in GitHub Desktop.
Save simongregory/2c60d270006d4bf727babca53dca1f87 to your computer and use it in GitHub Desktop.
Wrap a Javascript event in a Promise with a time out.
function waitForEventWithTimeout(emitter, eventName, timeout) {
return new Promise((resolve, reject) => {
let timer;
function listener(data) {
clearTimeout(timer);
emitter.removeEventListener(eventName, listener);
resolve(data);
}
emitter.addEventListener(eventName, listener);
timer = setTimeout(() => {
emitter.removeEventListener(eventName, listener);
reject(new Error("timeout waiting for " + eventName));
}, timeout);
});
}
// Example usage
//const promise = waitForEventWithTimeout(session, 'message', 2000);
@chelopme
Copy link

chelopme commented Sep 1, 2020

I LOVE YOU

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment