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

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

		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)
