add stream.promise()