Allow request timeout to be specified

Use variadic function signature so that existing clients don’t need
updating. Here the implementation is doing the hard work to make it
simple. Have sensible defaults, but expose advanced configuration for
more demanding client usage.