Add custom callback functionality that doesn't depend on socket.io backend