in src/index.js [179:197]
async close() {
this._selfClosed = true;
await this._connection.close();
try {
// Ensure all queued bytes have been sent before closing the connection.
let tries = 0;
while (this._socket.bufferedAmount > 0) {
if (++tries > CLOSE_FLUSH_BUFFER_MAX_TRIES) {
throw new Error('Could not flush the outgoing buffer in time.');
}
await new Promise(res => setTimeout(res, CLOSE_FLUSH_BUFFER_INTERVAL_MS));
}
} finally {
// If the peer hasn't closed, we might still receive some data.
if (this._peerClosed) {
this._shutdown();
}
}
}