It looks like new APIs are needed -- either in a new timed callback
API, or something usable from the callback function.
Without looking at it too deeply, It seems like suspendable handlers
(that continue on as HTTP) are not really working.
When your timed callback ends, the underlying socket is not in the
"keepalive" queue anymore in the MPM. The way it normally gets back
into that queue is by ap_process_request ending up with state ==
CONN_STATE_WRITE_COMPLETION, you can see that it doesn't take much to
hook it back into the keepalive queue in event.c.
It looks like new APIs are needed -- either in a new timed callback
API, or something usable from the callback function. Unfortunately the
timed callback is not explicitly connection-rec related now so it
cannot really sort this out without some hints.