 				sema.signal()
 			}
 			
-			sema.wait()
+			if sema.wait(timeout: DispatchTime.now() + 30) == .timedOut {
+				responseError = RequestError.timeout
+			}
 		}
 		
 		

			}
			
			
			sema.wait()
		}
		
		guard let response = resp as? HTTPURLResponse, data != nil else {

		case invalidURL(url: String)
		case notUTF8
		case unknownError
		case timeout
	}
	
	
