# RxJS: invoke two async calls, return the first that passes a condition, or a special value of none of them does

Using RxJS, I want to invoke two different asynchronous operations, which may or may not return null. They may also take indefinite time to complete.

I want to achieve the following:

• If operation A returns value 1, then immediately return value 1
• If operation B returns value 2, then immediately return value 2
• If both operation A and B return null, then return null.

I suppose I can achieve the first two simply as follows:

const bothOperations = merge(callA(), callB());
const firstSuccess = bothOperations.first(res => res !== null);
return firstSuccess;


But how do I get the third possibility into this?

Source: AngularJS