When bg_delivery is used, the connection thread is in charge for the request only until the header is returned. The actual spooling is performed by a separate thread. Releasing the connection thread asap is the primary reason for improved scalability. This has however consequences for trace filters, which are as well run at the time the connection thread is released (at a time the file is not yet delivered). This affects as well ns_log, which is implemented in aolserver as a trace filter.
When using bgdelivery, one can get the final amount of data by extending the proc "end-delivery" (4th argument). If there is interest, i can turn every delivery into an object, such one can register a mixin class to overload the behavior without changing the original procs.