             }
 
             return Disposables.create {
-                observer.onCompleted()
                 token.stop()
             }
         }


     - returns: `Observable<Array<E.Element>>`, e.g. when called on `Results<Model>` it will return `Observable<Array<Model>>`, on a `List<User>` it will return `Observable<Array<User>>`, etc.
     */
    public static func array(from collection: E, synchronousStart: Bool = true) -> Observable<Array<E.ElementType>> {
        return Observable.collection(from: collection, synchronousStart: synchronousStart)
            .map { $0.toArray() }
    }

     */
    public func add<O: Object>(update: Bool = false,
                    onError: ((O?, Error)->Void)? = nil) -> AnyObserver<O> {

        return RealmObserver(realm: base) { realm, element, error in
            guard let realm = realm else {
                onError?(nil, error ?? RxRealmError.unknown)
                return
