diff options
-rw-r--r-- | index.js | 5 | ||||
-rw-r--r-- | lib/conn-pool.js | 5 | ||||
-rw-r--r-- | lib/file.js | 3 | ||||
-rw-r--r-- | lib/server.js | 3 | ||||
-rw-r--r-- | lib/torrent.js | 11 | ||||
-rw-r--r-- | package.json | 1 |
6 files changed, 17 insertions, 11 deletions
@@ -13,6 +13,7 @@ const path = require('path') const Peer = require('simple-peer') const randombytes = require('randombytes') const speedometer = require('speedometer') +const queueMicrotask = require('queue-microtask') const ConnPool = require('./lib/conn-pool') // browser exclude const Torrent = require('./lib/torrent') @@ -100,7 +101,7 @@ class WebTorrent extends EventEmitter { if (typeof ConnPool === 'function') { this._connPool = new ConnPool(this) } else { - process.nextTick(() => { + queueMicrotask(() => { this._onListening() }) } @@ -150,7 +151,7 @@ class WebTorrent extends EventEmitter { ready() }) } else { - process.nextTick(ready) + queueMicrotask(ready) } } diff --git a/lib/conn-pool.js b/lib/conn-pool.js index 5746ca5..80aa87f 100644 --- a/lib/conn-pool.js +++ b/lib/conn-pool.js @@ -2,6 +2,7 @@ const arrayRemove = require('unordered-array-remove') const debug = require('debug')('webtorrent:conn-pool') const net = require('net') // browser exclude const utp = require('utp-native') // browser exclude +const queueMicrotask = require('queue-microtask') const Peer = require('./peer') @@ -95,14 +96,14 @@ class ConnPool { try { this.utpServer.close(cb) } catch (err) { - if (cb) process.nextTick(cb) + if (cb) queueMicrotask(cb) } } try { this.tcpServer.close(cb) } catch (err) { - if (cb) process.nextTick(cb) + if (cb) queueMicrotask(cb) } this.tcpServer = null diff --git a/lib/file.js b/lib/file.js index 3e75091..d9a10e0 100644 --- a/lib/file.js +++ b/lib/file.js @@ -7,6 +7,7 @@ const streamToBlob = require('stream-to-blob') const streamToBlobURL = require('stream-to-blob-url') const streamToBuffer = require('stream-with-known-length-to-buffer') const FileStream = require('./file-stream') +const queueMicrotask = require('queue-microtask') class File extends EventEmitter { constructor (torrent, file) { @@ -81,7 +82,7 @@ class File extends EventEmitter { createReadStream (opts) { if (this.length === 0) { const empty = new PassThrough() - process.nextTick(() => { + queueMicrotask(() => { empty.end() }) return empty diff --git a/lib/server.js b/lib/server.js index cc33159..85b4573 100644 --- a/lib/server.js +++ b/lib/server.js @@ -4,6 +4,7 @@ const http = require('http') const mime = require('mime') const pump = require('pump') const rangeParser = require('range-parser') +const queueMicrotask = require('queue-microtask') function Server (torrent, opts = {}) { const server = http.createServer() @@ -40,7 +41,7 @@ function Server (torrent, opts = {}) { // Only call `server.close` if user has not called it already if (!cb) cb = () => {} - if (closed) process.nextTick(cb) + if (closed) queueMicrotask(cb) else server.close(cb) torrent = null } diff --git a/lib/torrent.js b/lib/torrent.js index 8787e53..201a452 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -25,6 +25,7 @@ const speedometer = require('speedometer') const utMetadata = require('ut_metadata') const utPex = require('ut_pex') // browser exclude const utp = require('utp-native') // browser exclude +const queueMicrotask = require('queue-microtask') const File = require('./file') const Peer = require('./peer') @@ -202,7 +203,7 @@ class Torrent extends EventEmitter { // Attempt to set infoHash property synchronously this.infoHash = parsedTorrent.infoHash this._debugId = parsedTorrent.infoHash.toString('hex').substring(0, 7) - process.nextTick(() => { + queueMicrotask(() => { if (this.destroyed) return this._onParsedTorrent(parsedTorrent) }) @@ -586,7 +587,7 @@ class Torrent extends EventEmitter { this.store.get(index, (err, buf) => { if (this.destroyed) return cb(new Error('torrent is destroyed')) - if (err) return process.nextTick(cb, null) // ignore error + if (err) return queueMicrotask(cb, null) // ignore error sha1(buf, hash => { if (this.destroyed) return cb(new Error('torrent is destroyed')) @@ -1031,7 +1032,7 @@ class Torrent extends EventEmitter { this.emit('wire', wire, addr) if (this.metadata) { - process.nextTick(() => { + queueMicrotask(() => { // This allows wire.handshake() to be called (by Peer.onHandshake) before any // messages get sent on the wire this._onWireWithMetadata(wire) @@ -1129,7 +1130,7 @@ class Torrent extends EventEmitter { _updateSelections () { if (!this.ready || this.destroyed) return - process.nextTick(() => { + queueMicrotask(() => { this._gcSelections() }) this._updateInterest() @@ -1591,7 +1592,7 @@ class Torrent extends EventEmitter { }) function onUpdateTick () { - process.nextTick(() => { self._update() }) + queueMicrotask(() => { self._update() }) } return true diff --git a/package.json b/package.json index 827f195..90fabd8 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "package-json-versionify": "^1.0.4", "parse-torrent": "^9.1.0", "pump": "^3.0.0", + "queue-microtask": "^1.2.2", "random-iterate": "^1.0.1", "randombytes": "^2.1.0", "range-parser": "^1.2.1", |