673
674
private requestEvent(channelName: string, name: string, arg?: any): Event<any> {
675
>
const id = this.lastRequestId++;
ipc.ts
676
>
const type = RequestType.EventListen;
677
>
const request: IRawRequest = { id, type, channelName, name, arg };
678
>
679
>
let uninitializedPromise: CancelablePromise<void> | null = null;
680
>
681
>
const emitter = new Emitter<any>({
682
>
onWillAddFirstListener: () => {
683
>
const handler: IHandler = (res: IRawResponse) => emitter.fire((res as IRawEventFireResponse).data);
684
>
this.handlers.set(id, handler);
685
>
const doRequest = () => {
686
>
this.activeRequests.add(emitter);
687
>
this.sendRequest(request);
688
>
};
689
>
if (this.state === State.Idle) {
690
>
doRequest();
691
>
} else {
692
uninitializedPromise = createCancelablePromise(_ => this.whenInitialized());
693
uninitializedPromise.then(() => {