When request returns CompletableFuture or is asynchronous in some other way WebRequestTrackingFilter will measure only time until CompletableFuture is returned, but request is not completed after that. Additional work (defined in CompletableFuture) will be done to return response to client - this time won't be measured by WebRequestTrackingFilter.