task = request dispatch-errors @fx ->
  if !dispatch-errors ->
    - fx (process request)
  else
    - fx (process request)
    + ec, error > 
      fx (dsp ec error rq)
    ;
  ;
_
  request : task-request
  dispatch-errors : 1 | 0
;

task :: _(request), 0, _(@fx)

process task = rq ->                        dsp task = ec error rq + res ->
  while (...) ->                              write rq.port-name .
    ...
                                              res = <
    write rq.port-name reply                          error-code : ec
  ;                                                   error-message : error
_                                                   >
  rq : task-request                         _
;                                             ec : ERR_*
                                              error : string
                                              rq : task-request
                                            ;