in lib/eventstream_rpc.ts [701:733]
async close() {
return new Promise<void>(async (resolve, reject) => {
if (this.state == OperationState.Closed) {
resolve();
return;
}
this.operationConfig.client.removeUnclosedOperation(this);
let shouldTerminateStream: boolean = this.state == OperationState.Activated;
this.state = OperationState.Closed;
if (shouldTerminateStream) {
try {
await this.stream.sendMessage({
message: {
type: eventstream.MessageType.ApplicationMessage,
flags: eventstream.MessageFlags.TerminateStream
}
});
} catch (e) {
// an exception generated from trying to gently end the stream should not propagate
}
}
setImmediate(() => {
this.stream.close();
});
resolve();
});
}