É possível usar um MemoryStream com FileStreamResult?

Estou usando o DotNetZip para criar um arquivo zip e passá-lo para um FileResult. Na depuração, posso verificar se o MemoryStream contém um arquivo, mas quando o executo através do FileStreamResult, ele retorna 0 bytes:

public FileResult GetZipFiles(int documentId) {
       var file = fileRepository.Get(documentId);
       var zip = new ZipFile();
       var stream = new MemoryStream();

       var filePath = Path.Combine(UploadsFolder, Path.GetFileName(file.Id));

       zip.AddFile(filePath);
       zip.Save(stream);

       var result = new FileStreamResult(stream, "application/zip") 
                    { FileDownloadName = "hey.zip" };

       return result;
 }

Mais uma vez, posso verificar se o fluxo não está vazio, mas isso sempre retornará o arquivohey.zip como 0 bytes. Eu devo estar usandoMemoryStream errado aqui? OuFileStreamResult faz algo que eu não estou esperando fazer? Eu useiFileStreamResult antes, mas não comMemoryStream.