in lib/eventstream_rpc.ts [825:863]
async activate(request: RequestType) : Promise<ResponseType> {
let resultPromise : Promise<ResponseType> = new Promise<ResponseType>(async (resolve, reject) => {
try {
let stream : eventstream.ClientStream = this.operation.getStream();
let responsePromise : Promise<eventstream.Message> = cancel.newCancellablePromiseFromNextEvent({
cancelController: this.operationConfig.options.cancelController,
emitter : stream,
eventName : eventstream.ClientStream.MESSAGE,
eventDataTransformer: (eventData: any) => { return (eventData as eventstream.MessageEvent).message; },
cancelMessage: "Eventstream execute() cancelled by user request"
});
if (!this.operationConfig.options.disableValidation) {
validateRequest(this.serviceModel, this.operationConfig.name, request);
}
let requestMessage: eventstream.Message = serializeRequest(this.serviceModel, this.operationConfig.name, request);
await this.operation.activate(requestMessage);
let message : eventstream.Message = await responsePromise;
// If the server terminated the stream, then set the operation to be ended immediately
if ((message.flags ?? 0) & eventstream.MessageFlags.TerminateStream) {
this.operation.setStateEnded();
}
let response : ResponseType = deserializeResponse(this.serviceModel, this.operationConfig.name, message);
resolve(response);
} catch (e) {
reject(e);
}
});
let autoClosePromise : Promise<ResponseType> = resultPromise.finally(async () => { await this.operation.close(); });
return autoClosePromise;
}