Free incoming requests ASAP

Before this change, an expiration timer would hold a reference to a
request until the timer expires (5 seconds by default), even if a reply
gets generated much sooner. The result is that all requests recieved in
the last 5 seconds are held in memory even if most/all could be purged.

This change cancels the expiration timer and allows the GC to free a
request for which a reply has been generated.
Change it to 
if (timeout != null) {
timeout.cancel();
}