Register middleware that fires after the action. If the action does not return the payload, then the afterAction will not have access to the payload object.
Channel Provider
(async ()=> {
    const provider = await fin.InterApplicationBus.Channel.create('channelName');
    await provider.register('provider-action', (payload, identity) => {
        return {
            echo: payload
        };
    });
    await provider.afterAction((action, payload, identity) => {
        //the payload can be altered here after handling the action but before sending an acknowledgement.
        payload.sent = date.now();
        return payload;
    });
})();Channel Client
(async ()=> {
    const client = await fin.InterApplicationBus.Channel.connect('channelName');
    await client.register('client-action', (payload, identity) => {
        return {
            echo: payload
        };
    });
    await client.afterAction((action, payload, identity) => {
        //the payload can be altered here after handling the action but before sending an acknowledgement.
        payload.sent = date.now();
        return payload;
    });
})();