Add specs and fix logic

Prior to this there were cases where the timeout did not behave as expected. All tests now pass.

this test will fail with the new refactor (e599a9), but I'd say the test is wrong. The refactor should make it more clear the overtime only applies to the wait timeout, not to the service timeout.