Periodic timeout monitor task is not cancelled
The periodic timeout monitor task is meant to be cancelled when the last TimeoutInputStream is closed, but this doesn't happen unless every stream's close() method is called. Transport connections are often closed without calling close() on the input stream, leaving the periodic task running unnecessarily and leaking a reference to the closed stream.