diff --git a/.github/workflows/companion.yml b/.github/workflows/companion.yml index 8daa048e8..6ebf51e37 100644 --- a/.github/workflows/companion.yml +++ b/.github/workflows/companion.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [10.20.1, 12.x, 14.x] + node-version: [10.20.1, 12.x, 14.x, 16.x] steps: - name: Checkout sources uses: actions/checkout@v2 diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index a56e495a6..318d513f7 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -241,7 +241,15 @@ class Uploader { * @param {Function} callback */ onSocketReady (callback) { - emitter().once(`connection:${this.token}`, () => callback()) + /** @type {any} */ // WriteStream.pending was added in Node.js 11.2.0 + const stream = this.writeStream + if (stream.pending) { + let connected = false + emitter().once(`connection:${this.token}`, () => { if (stream.pending) connected = true; else callback() }) + this.writeStream.once('ready', () => connected && callback()) + } else { + emitter().once(`connection:${this.token}`, () => callback()) + } logger.debug('waiting for connection', 'uploader.socket.wait', this.shortToken) } diff --git a/packages/@uppy/companion/test/__tests__/uploader.js b/packages/@uppy/companion/test/__tests__/uploader.js index f58ea6660..8f6c76124 100644 --- a/packages/@uppy/companion/test/__tests__/uploader.js +++ b/packages/@uppy/companion/test/__tests__/uploader.js @@ -1,4 +1,4 @@ -/* global jest:false, test:false, expect:false, describe:false */ +'use strict' jest.mock('tus-js-client')