     public func asImmutable() -> ImmutableObservable<T> {
         return self
     }
+    
+    fileprivate func notify(observer: @escaping Observer, _ queue: DispatchQueue? = nil, oldValue: T?) {
+        if let queue = queue {
+            queue.async {
+                observer(self.value, oldValue)
+            }
+        } else {
+            observer(value, oldValue)
+        }
+    }
 }
 
 public class Observable<T>: ImmutableObservable<T> {

        let id = uniqueID.next()!
        
        observers[id] = (observer, queue)
        observer(value, nil)
        
        let disposable = Disposable { [weak self] in
            self?.observers[id] = nil

        didSet {
            let newValue = _value
            observers.values.forEach { observer, dispatchQueue in
                notify(observer: observer, dispatchQueue, oldValue: oldValue)
            }
        }
    }
