         var received: [String] = []
 
         let exp = expectation(description: "debounce")
-        let delay = 0.1
+        let delay = 0.01
 
         DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
             observable.on(.next("2"))

        var received: [String] = []

        let exp = expectation(description: "throttle")
        let delay = 0.1

        DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + delay) {
            exp.fulfill()

        var received: [String] = []

        let exp = expectation(description: "debounce")
        let delay = 0.02

        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay/2) {
            observable.on(.next("2"))
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay/2) {
                observable.on(.next("3"))
                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
                    exp.fulfill()
                }
            }
        }

        observable.debounce(delay).subscribe(onNext: {
            received.append($0)
        })

