Skip to content

Commit 3394803

Browse files
committed
@dr-js/core@0.3.0-dev.10
notable change: - node: use `request.destroy()|request.destroyed` instead of `request.abort()|request.aborted` follow: nodejs/node#32807 - package update
1 parent 115292a commit 3394803

7 files changed

Lines changed: 15 additions & 18 deletions

File tree

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "@dr-js/core",
4-
"version": "0.3.0-dev.9",
4+
"version": "0.3.0-dev.10",
55
"description": "A collection of strange functions",
66
"author": "dr-js",
77
"license": "MIT",

source/node/net.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const requestHttp = (
1818
const promise = new Promise((resolve, reject) => {
1919
request = (url.protocol === 'https:' ? httpsRequest : httpRequest)(url, option, resolve)
2020
const endWithError = (error) => {
21-
request.abort()
21+
request.destroy()
2222
reject(error)
2323
}
2424
request.on('timeout', () => endWithError(new Error('NETWORK_TIMEOUT')))
@@ -99,7 +99,7 @@ const wrapPayload = (request, response, timeoutPayload, onProgressDownload) => {
9999
if (payloadOutcome) return
100100
__DEV__ && console.log('[fetch] payload dropped')
101101
payloadOutcome = 'DROP'
102-
request.abort() // drop request
102+
request.destroy() // drop request
103103
})
104104
const stream = () => { // TODO: also use async?
105105
if (payloadOutcome) throw new Error(payloadOutcome === 'KEEP' ? 'PAYLOAD_ALREADY_USED' : 'PAYLOAD_ALREADY_DROPPED')
@@ -109,7 +109,7 @@ const wrapPayload = (request, response, timeoutPayload, onProgressDownload) => {
109109
const timeoutToken = setTimeout(() => {
110110
__DEV__ && console.log('[fetch] payload timeout', timeoutPayload)
111111
response.emit('error', new Error('PAYLOAD_TIMEOUT')) // TODO: NOTE: emit custom `error` event to signal stream stop
112-
request.abort() // drop request
112+
request.destroy() // drop request
113113
}, timeoutPayload)
114114
// request.off('timeout', func) // TODO: NOTE: timeoutPayload should be faster than the underlying socket timeout
115115
response.on('end', () => clearTimeout(timeoutToken))

source/node/server/Responder/Send.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const gzipAsync = promisify(gzip)
99
// TODO: check timeout for responderSend?
1010

1111
const setResponseContent = (store, entityTag, type, length) => {
12-
if (store.request.aborted) return // Added in: v10.1.0
12+
if (store.request.destroyed) return
1313
entityTag && store.response.setHeader('etag', entityTag)
1414
const shouldSendContent = !entityTag || !store.request.headers[ 'if-none-match' ] || !store.request.headers[ 'if-none-match' ].includes(entityTag)
1515
shouldSendContent
@@ -19,7 +19,7 @@ const setResponseContent = (store, entityTag, type, length) => {
1919
}
2020

2121
const setResponseContentRange = (store, entityTag, type, length = '*', start, end) => {
22-
if (store.request.aborted) return // Added in: v10.1.0
22+
if (store.request.destroyed) return
2323
entityTag && store.response.setHeader('etag', entityTag)
2424
store.response.writeHead(206, { 'content-type': type, 'content-length': end - start + 1, 'content-range': `bytes ${start}-${end}/${length}` })
2525
return true
@@ -34,7 +34,7 @@ const responderSendBufferRange = (store, { buffer, entityTag, type = DEFAULT_MIM
3434
length && writeBufferToStreamAsync(store.response, buffer.slice(start, end + 1))
3535

3636
const responderSendBufferCompress = async (store, { buffer, bufferGzip, entityTag, type = DEFAULT_MIME, length = buffer.length }) => {
37-
if (store.request.aborted) return // Added in: v10.1.0
37+
if (store.request.destroyed) return
3838
entityTag && store.response.setHeader('etag', entityTag)
3939
const shouldSendContent = !entityTag || !store.request.headers[ 'if-none-match' ] || !store.request.headers[ 'if-none-match' ].includes(entityTag)
4040
const shouldGzip = shouldSendContent && length && store.request.headers[ 'accept-encoding' ] && store.request.headers[ 'accept-encoding' ].includes('gzip')
@@ -57,7 +57,7 @@ const responderSendStreamRange = (store, { streamRange, entityTag, type = DEFAUL
5757
waitStreamStopAsync(setupStreamPipe(streamRange, store.response))
5858

5959
const responderSendStreamCompress = async (store, { stream, streamGzip, entityTag, type = DEFAULT_MIME, length }) => {
60-
if (store.request.aborted) return // Added in: v10.1.0
60+
if (store.request.destroyed) return
6161
entityTag && store.response.setHeader('etag', entityTag)
6262
const shouldSendContent = !entityTag || !store.request.headers[ 'if-none-match' ] || !store.request.headers[ 'if-none-match' ].includes(entityTag)
6363
const shouldGzip = shouldSendContent && length && store.request.headers[ 'accept-encoding' ] && store.request.headers[ 'accept-encoding' ].includes('gzip')

source/node/server/WebSocket/WebSocket.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,6 @@ const createWebSocket = ({
5353
if (readyState === CLOSED) return
5454
__DEV__ && console.log('[WebSocket] doCloseSocket')
5555

56-
// TODO: HACK: socket.writable not in Official API, check:
57-
// https://github.com/nodejs/node/issues/21431
58-
// https://github.com/websockets/ws/blob/master/lib/websocket-server.js#L354
5956
readyState === CONNECTING && socket.writable && socket.write([
6057
'HTTP/1.1 400 Bad Request',
6158
'connection: close',

source/node/server/WebSocket/WebSocketClient.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ const createWebSocketClient = ({
5252
})
5353

5454
request.on('error', (error) => {
55-
if (request.aborted) return
56-
request.abort()
55+
if (request.destroyed) return
56+
request.destroy()
5757
onError(error)
5858
})
5959
request.on('response', (response) => {
6060
__DEV__ && console.log('[WebSocketClient] unexpected response', response)
61-
request.abort()
61+
request.destroy()
6262
onError(new Error('unexpected response'))
6363
})
6464
request.on('upgrade', async (response, socket, bodyHeadBuffer) => {

source/node/testServer.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ const withTestServer = (asyncTest, generateTestHTMLAsync) => async () => {
4040
store.response.writeHead(200, { 'content-length': BUFFER_SCRIPT.length * 64 })
4141
store.response.flushHeaders() // fast header but slow payload // TODO: NOTE: not work for browser testing, not flushing header in time
4242
await setTimeoutAsync(40)
43-
if (store.request.aborted) return
43+
if (store.request.destroyed) return
4444
// TODO: flush more so the size is large enough for browser to get HEADERS_RECEIVED
4545
// possible: https://stackoverflow.com/questions/26685554/xmlhttprequest-readystate-headers-received-waiting-for-entire-file-to-download
4646
await writeBufferToStreamAsync(store.response, BUFFER_SCRIPT)
4747
await setTimeoutAsync(50)
48-
if (store.request.aborted) return
48+
if (store.request.destroyed) return
4949
await writeBufferToStreamAsync(store.response, BUFFER_SCRIPT)
5050
await setTimeoutAsync(100)
51-
if (store.request.aborted) return // should not reach here
51+
if (store.request.destroyed) return // should not reach here
5252
await writeBufferToStreamAsync(store.response, BUFFER_SCRIPT)
5353
return responderEnd(store)
5454
} ],

0 commit comments

Comments
 (0)