Angular 2 RxJS verifica se o evento do mouse ainda está ativo após o atraso

Estou usando o Angular 2 para fazer uma diretiva. Eu tenho os seguintes eventos vinculados ao componente host:

host: {
    '(mouseenter)': 'onMouseEnter($event)',
    '(mouseleave)': 'onMouseLeave($event)'
}

Também criei dois fluxos e ouvintes na diretiva para gerenciar os dois eventos

export class PopupDirective {
    private _mouseEnterStream: EventEmitter<any> = new EventEmitter();
    private _mouseLeaveStream: EventEmitter<any> = new EventEmitter();

    onMouseEnter($event) {
         this._mouseEnterStream.emit($event);
    }

    onMouseLeave($event) {
         this._mouseLeaveStream.emit($event);
    }
}

Eu quero o meusubscribe&nbsp;para ser chamado apenas se omouseenter&nbsp;O evento ainda está ativo após um atraso fixo (ou seja, ummouseleave&nbsp;não ocorreu). Tentei fazer dessa maneira, mas não funciona (o que faz sentido, eu simplesmente não sei como consertar).

this._mouseEnterStream.flatMap((e) => {
  return Observable
    .of(e)
    .takeUntil(this._mouseLeaveStream);
}).delay(2000).subscribe(
  () => console.log('yay, it worked!')
);

Alguém com experiência em Angular 2 / RxJS sabe como devo abordar isso?