 
 	internal init(queueLimit: Int) {
 		self.queueLimit = queueLimit
+
+		do {
+			reachability = try Reachability.reachabilityForInternetConnection()
+		}
+		catch let error {
+			logInfo("Cannot check for internet connectivity: \(error)")
+			reachability = nil
+		}
+
+		reachability?.whenReachable = { [weak self] reachability in
+			logDebug("Internet is reachable again!")
+
+			reachability.stopNotifier()
+			self?.sendNextRequest()
+		}
+	}
+
+
+	deinit {
+		reachability?.stopNotifier()
 	}
 
 

			self.pendingTask = nil

			if let error = error {
				guard error.retryable else {
					logError("Request \(url) failed and will not be retried: \(error)")

					self.numberOfFailuresForCurrentRequest = 0
					self.queue.removeFirstEqual(url)

					self.delegate?.requestManager(self, didFailToSendRequest: url, error: error)
					return
				}
				guard self.numberOfFailuresForCurrentRequest < 10 else {
					logError("Request \(url) failed and will no longer be retried: \(error)")

					self.numberOfFailuresForCurrentRequest = 0
					self.queue.removeFirstEqual(url)

					self.delegate?.requestManager(self, didFailToSendRequest: url, error: error)
					return
				}

				self.numberOfFailuresForCurrentRequest += 1
				self.sendNextRequest(maximumDelay: Double(self.numberOfFailuresForCurrentRequest * 5))
				return
			}

			self.numberOfFailuresForCurrentRequest = 0
			self.queue.removeFirstEqual(url)

			logDebug("Sent: \(url)")


		pendingTask.cancel()

		self.currentRequest = nil
		self.currentFailureCount = 0
		self.pendingTask = nil
	}

