Using maxFileSize while piping the data to a WriteStream
To reduce the amount of memory needed to transfer an upload between the client and my Google Cloud Storage I want to just pipe the readStream from Apollo to the writeStream that I create for the too-be-uploaded file. This worked flawlessly until I realized I should limit the file-size. When piped, the `limit` event no longer fires when the received amount exceeds maxFileSize. I realize that I could probably write a wrapper in between the two, but would like to ask here before I start.

```javascript
const updateProfilePicture = async (parent, args, ctx) => {
  const { stream } = await args.file;
  const user = await currentUser({}, {}, ctx);

  try {
    await new Promise((resolve, reject) => {
      stream.pipe(new Storage()
        .bucket(process.env.BUCKET_NAME)
        .file(`/profile_pictures/${user.id}.png`)
        .createWriteStream({
          gzip: true,
          public: true,
        })
        .on('error', error => reject(error))
        .on('finish', () => resolve()));
    });

    return {
      url: avatarUrl(user),
    };
  } catch (err) {
    throw new Error(`Failed to upload profile picture! Err: ${err.message}`);
  }
};
```
This is what my mess looks like so far. If I don't specify any arguments to the upload server this works. If I specify the maxFileSize this one just hangs for 10 minutes until it times out the request and then yields a 500 status.

I've tried to listen to the `limit` event after the `.pipe()` and on the writeStream itself. It makes no difference as it's never fired.

So, do any of you have an idea of how to solve this?

Thank you so much in advance for reading :smile: 
Have an excellent weekend!