Can you tell me why this `()` success method is not firing? When I use `forkjoin()` it is working nicely.Success method must fire every time no? Hope it is like a `final` method on `try-catch` block.

**Note:** Please see the inline comments too.

**.ts**

```
 getAllBooksReadAndUnRead(id: number, loader?) {
        this.article.getAllBooksReadAndUnRead(id)
          .map((res: any) => res.json())
          .subscribe(res => {
               this.setAllData(res); //it comes to here
               this.loadingControllerService.dismissLoader(loader);//I have to put this here.Then no problem.But I think it is duplicate of work???
          }, 
          error => {this.loadingControllerService.dismissLoader(loader);},
          () => {this.loadingControllerService.dismissLoader(loader);}//not fire
       });
      }

```

**Api call**

```
 getAllBooksReadAndUnRead(bookId) {
        return this.apiSer.get(`${config.fromThisBook}?page=all&book[]=${bookId}`);
    }

```

**Generic method:**

```
get(api) {
        return new Observable(observer => {
            let header = new Headers();
            this.createHeader(header)
                .then(() => {
                    let options = new BaseRequestOptions();
                    options.withCredentials = true;
                    options.headers = header;
                    this.http.get(api, options)
                        .subscribe(response => {
                            observer.next(response);
                         }, (e) => {
                            observer.error(e);
                        });
                })
        })
    }

```

**post()**

```
post(url, params): Observable<any> {
        return new Observable(observer => {
            let header = new Headers();
            this.createHeader(header)
                .then(() => {
                    let options = new RequestOptions({ headers: header });
                    this.http.post(url, params, options)
                        .subscribe(response => {
                            observer.next(response);
                            observer.complete();
                        }, (e) => {
                            observer.error(e);
                        });
                })
        })
    }

```