function recoverWith (f, stream) {
  return new Stream(new RecoverWith(f, stream.source))
}
If stream encounters an error, recover and continue with items from stream
returned by f.
@param {function(error:*):Stream} f function which returns a new stream
@param {Stream} stream
@returns {Stream} new stream which will recover from an error by calling f