A nice piece of code for calling services with a timeout and maximum attempts, in case the service should cause an exception.
It follows the standard practise for "Try" in .Net, like TryParse, of returning a boolean to indicate success and the result as an out parameter. Should you wish to find out the exception that may have occurred this is also passed as an out parameter.
I've also included an Execute mthod that will raise an exception should the service request timeout or fail more than the maximum number of attempts,
The source code solution includes unit tests in MBUnit, NUnit, xUnit and MSTest: