Don't you also need to specify the error-cases at each stage and at what level of the system you would like to handle them (Log away, throw ever more up, Inform others, create Tasks, etc.)?
I found that to be really vital for good code. https://fsharpforfunandprofit.com/rop/