added timeout feature on individual requests in addition to global timeout