rely on a function passed in to subscribe not blocking and returning