Why is timeout necessary?
Timeout mechanism was implemented to avoid possible deadlocks in the system, because of possible complication in interaction between Callback File System, Windows, and user implementation of callback/event handlers.
If your callback/event handler expects a timeout to happen due to slow operations (eg. across network) you can call ResetTimeout() method from the callback/event handler to reset the counter and extend the time leased for the operation. However don't reset timeout counter infinitely - as long as your code is working, the system is in unstable state and some other processes working in background can be blocked.