You can buy this project and download/modify it how often you want.
cancel() firstWithValue subscribe()