NDIS LWF Deregister Driver Unload Issue

When Pausing/Detaching, is NDIS supposed to wait for all ReturnNetBufferLists handlers to complete before detaching?

I am aware that it is up to the LWF to ensure that all outstanding sends and receives have completed before returning from the Pause handler and for that I am using ExReleaseRundownProtectionCacheAwareEx (last line) within the ReturnNetBufferLists handler. The Pause handler waits on the rundown and returns success. Then NDIS calls the Detach handler and the LWF performs the detach. However, sometimes the ReturnNetBufferLists handler finishes executing the remaining instructions within the routine after the detach.

If the above scenario is occurring because the driver is attempting to unload (NdisFDeregisterFilterDriver called within unload) and the driver unloads before the remaining instructions within ReturnNetBufferLists handler are executed, the bugcheck DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS occurs.

It seems like NDIS should wait until all of the callbacks have completed before allowing detach and if not, then how should one ensure that the callbacks have completely executed before unloading?