*/
export function once<T>(event: Event<T>): Event<T> {
// we need this, in case the event fires during the listener call
let didFire = false;
let result: IDisposable | undefined = undefined;
result = event(e => {
if (didFire) {
return;