         var qPassed = true
         
         spin.start()
-        dispatch_main_every(0.1) { t in
+        DispatchQueue.main.async(every: 0.1) { (t: DispatchSourceTimer) in
+            count += 1
+            if !onMainEverything() { qPassed = false }
+            if count == 10 {
+                spin.done()
+                //t.cancel()
+            }
+        }
+        spin.wait()
+        
+        XCTAssertEqual(count, 10, "counted incorrect times")
+        XCTAssertTrue(qPassed, "on incorrect queue")
+    }
+    
+    func testBasicSwift3xDispatchEveryMainExact() {
+        
+        let spin = MainSpin()
+        var count = 0
+        var qPassed = true
+        
+        spin.start()
+        DispatchQueue.main.async(every: 0.1, leeway: 0) { (t: DispatchSourceTimer) in
             count += 1
             if !onMainEverything() { qPassed = false }
             if count == 10 {

		
		var res: Int = 0
		
		dispatch_bg_async {
			res = <<~{ self.asyncTest_CallsOnMainReturns4($0) }
			spin.done()
		}

		var res: Int = 0
		var str: String = ""
		
		backgroundQueue.async {
			(res, str) = <<-{ self.asyncTest_CallsOnMainReturnsIforBoth(3, handler: $0) }
			spin.done()
		}
