code: func reqProcessingTask(c *asyncConnHdl, ctl workerCtl) (ic *interrupt_code, ts *taskStatus) {
  
  	var err error
  	var errmsg string
  
  	bytecnt := 0
  	blen := 0
  	bufsize := c.spec().wBufSize
  	var sig interrupt_code
  
  	select {
  	case req := <-c.pendingReqs:
  		blen, err := c.processAsyncRequest(req)
  		if err != nil {
  			errmsg = fmt.Sprintf("processAsyncRequest error in initial phase")
  			goto proc_error
  		}
  		bytecnt += blen
  	case sig := <-ctl:
  		return &sig, &ok_status
  	}
  
  	for bytecnt < bufsize {
  		select {
  		case req := <-c.pendingReqs:
  			blen, err = c.processAsyncRequest(req)
  			if err != nil {
  				errmsg = fmt.Sprintf("processAsyncRequest error in batch phase")
  				goto proc_error
  			}
  			if blen > 0 {
  				bytecnt += blen
  			} else {
  				bytecnt = 0
  			}
  
  		case sig = <-ctl:
  			ic = &sig
  			goto done
  
  		default:
  			goto done
  		}
  	}
  
  done:
  	c.writer.Flush()
  	return ic, &ok_status
  
  proc_error:
  	log.Println(errmsg, err)
  	return nil, &taskStatus{snderr, err}
  }
docs: // Pending further tests, this addresses bug in earlier version
  // and can be interrupted