# File lib/rudy/aws/ec2.rb, line 31
31:     def self.execute_request(default=nil, timeout=nil, &request)
32:       timeout ||= 30
33:       raise "No block provided" unless request
34:       response = nil
35:       @@mutex.synchronize {
36:         begin
37:         
38:           Timeout::timeout(timeout) do
39:             response = request.call
40:           end
41:       
42:         # Raise the EC2 exceptions
43:         rescue ::AWS::Error, ::AWS::InvalidInstanceIDMalformed => ex  
44:           raise Rudy::AWS::Error, ex.message
45:       
46:         # NOTE: The InternalError is returned for non-existent volume IDs. 
47:         # It's probably a bug so we're ignoring it -- Dave. 
48:         rescue ::AWS::InternalError => ex
49:           raise Rudy::AWS::Error, ex.message
50:         
51:         rescue Timeout::Error => ex
52:           Rudy::Huxtable.le "Timeout (#{timeout}): #{ex.message}!"
53:         rescue SocketError => ex
54:           #Rudy::Huxtable.le ex.message
55:           #Rudy::Huxtable.le ex.backtrace
56:           raise SocketError, "Check your Internets!" unless @@global.offline
57:         ensure
58:           response ||= default
59:         end
60:         sleep 0.1  # defeat race conditions
61:       }
62:       response
63:     end