The problem is that getDetails return an Observable<Detail[]>. So the value being emitted to the first method is a Detail[], not a single Detail. What you can do is flatten the array first with flatMap, then you can call first