The fun(*) part is what happens when the cache is full but we want to load a dynamic library. If no cache pages are available, the DLL manager uses the same borrow mechanism to temporarily evict a page from the cache and use the resulting free memory for the DLL code it reads from disk. When the DLL code returns, the DLL manager re-reads the evicted cache page from disk and no one is the wiser.
(*) not guaranteed, actual fun may vary