Field value change of a virtual field

Here's a Typescript example:

const frameworkProvider: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID', 'v1');
    const tabContext: ITabContext = await frameworkProvider.getTabContext();
    const recordContext: IRecordContext = await tabContext.getActiveRecord();
      
    const requestObject: IFieldValueChangeEventRequest = frameworkProvider.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent') as IFieldValueChangeEventRequest;
    requestObject.setFields(['ServiceRequest.VirtualField']);
      
    recordContext.subscribe(requestObject, (message: IEventResponse) => {
        const response = message as IFieldValueChangeEventResponse;
        const fieldName: string = response.getResponseData().getFieldName();
        const newValue: string | boolean | number = response.getResponseData().getNewValue();
        const oldValue: string | boolean | number = response.getResponseData().getOldValue();
    });
Here's a JavaScript example:
const frameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID', 'v1'); 
    const tabContext = await frameworkProvider.getTabContext();
    const recordContext = await tabContext.getActiveRecord();  
    const requestObject = frameworkProvider.requestHelper.createSubscriptionRequest('cxEventBusFieldValueChangeEvent')
    requestObject.setFields(['ServiceRequest.VirtualField']);
      
    recordContext.subscribe(requestObject, (response) => {         
        const fieldName = response.getResponseData().getFieldName();
        const newValue = response.getResponseData().getNewValue();
        const oldValue = response.getResponseData().getOldValue();
     });