blob: fa8186e825bf7516f1281ee733a15fe496b21a5e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import CancellationToken from 'cancellationtoken'
import * as Https from 'https'
;(async () => {
await sendRequestWithTimeout(3000)
console.log()
await sendRequestWithTimeout(5)
})()
async function sendRequestWithTimeout(ms: number): Promise<void> {
console.log(`Sending request with a timeout of ${ms}ms...`)
const {token, cancel} = CancellationToken.timeout(ms)
const request = Https.get('https://github.com')
const unregister = token.onCancelled(() => request.abort())
await new Promise((resolve) => {
request.on('response', (response) => {
console.log(`Response: ${response.statusCode} ${response.statusMessage}`)
resolve()
})
request.on('abort', () => {
request.on('error', () => {}) // ignore socket hang up error
console.log('Aborted')
resolve()
})
})
unregister()
cancel()
}
|