I'm confused by why you are using a PCF component to manipulate data - as unless user interaction is required that really should be a server level task .
A PCF component is really a user interface component, you pass parameters into it and the control then renders the information in the way you want it to work. PCF components are also built on a framework with defined interfaces / events that are the only things the canvas / CDS form expects to interact with so you cannot add your own events as they would be ignored (webresources are still supported for exactly that reason).
That doesn't mean that you can't do most of what you want.
For onSuccess calling notifyOutputChanged within your code will tell the form that the data is valid and will trigger the form calling getOutputs to receive the newly updated values of the parameters the control is bound to (note, I believe canvas components work slightly differently).
Error handling and errors however need to handled within the control itself.
Finally don't forget you can bind an attribute to multiple controls - we do this on all our admin pages that used to need 100s of lines of Javascript but now consist of zero code and multiple PCF components - where one control (selectEntity) acts as the master control / trigger for various select attribute / select view / select lookup controls underneath.