 			
 			if sema.wait(timeout: DispatchTime.now() + 30) == .timedOut {
 				error = RequestError.timeout
+				print("Task timed out")
 			}
 		}
 		

	}
	
	private func performTask(_ task: URLSessionTask, completion: @escaping (Data?, HTTPURLResponse?, Error?) -> Void) {
		usleep(500 * 1000)
		tasks[task] = HTTPTask(task: task, completion: completion)
		task.resume()

		didReceive response: URLResponse,
		completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
		
		print("Recieved response")
		
		guard let task = tasks[dataTask] else {
			print("\(dataTask) is not in client task list; cancelling")
			completionHandler(.cancel)
