 			return
 		}
 		task.error = error
-		print("Task completed")
 		
 		task.completion(task.data, task.response, task.error)
 		

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

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