latent

Latent is a writable stream that buffers data until you decide where to write it by calling open(filename).

** Alpha, use at your own risk **

Latent is a writable stream that buffers data until you know where you need to write it. When you do, call open(filename). If you decide not to write the file, call close().

npm install latent

var latentStream = new latent.Latent();

//obviously you'd actually use this for uploads or other network streams
process.stdin.pipe(latentStream);

determineWhereToSave(function onDetermineComplete(whereToSave)
{
  if(err)
    return(latentStream.close());
  
  //ensure the directory exists
  mkdirp(path.dirname(whereToSave), function onMkdirpComplete(err)
  {
   if(err)
      return(latentStream.close());
   
   latentStream.open(whereToSave);
  });
});