Publish Custom Event on TabContext

Here's a TypeScript example for adding custom event publish on TabContext:
const publishCustomEvent = async () => {
    const frameworkProvider: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID','V1');
    const payload: ICustomEventRequest = frameworkProvider.requestHelper.createPublishRequest('CustomEvent') as ICustomEventRequest;
    payload.setCustomEventName('customEventName');
    payload.setEventPayload({ message: 'any data' });
    const tabContext: ITabContext = await frameworkProvider.getTabContext('browserTabId');
    tabContext.publish(payload).then((message: IOperationResponse) => {
        const response: ICustomEventResponse = message as ICustomEventResponse;
        console.log(response.getResponseData());
        console.log(response.getResponseData().getData());
        console.log(response.getResponseData().getCustomEventName());
    }).catch((err) => {
        console.log(err);
    });
};
Here's a JavaScript example:
const publishCustomEvent = async () => {
    const frameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID','V1');
    const payload = frameworkProvider.requestHelper.createPublishRequest('CustomEvent');
    payload.setCustomEventName('customEventName');
    payload.setEventPayload({ message: 'any data' });
    const tabContext = await frameworkProvider.getTabContext('browserTabId');
    tabContext.publish(payload).then((message) => {
        console.log(message.getResponseData());
        console.log(message.getResponseData().getData());
        console.log(message.getResponseData().getCustomEventName());
    }).catch((err) => {
        console.log(err);
    });
};