We are calling 
window.webworks.event.once(_ID, "payment.purchase.callback", webworksPurchaseCallback);
from client.js. So instead of "cancelling the event listening and returning to the user" I just used the same callback method.

Besides BPS_FAILURE is very rare case.