return a future from the stream method so it can be listened to for stream completion