refactor to invalidate timer after succ/fail callbacks
nil out timer after invalidate
add more tests with multiple scenarios to validate timeout.
document the behaviour of processRequest