diff options
Diffstat (limited to 'cancellationtoken/examples/04-http-request/index.ts')
-rw-r--r-- | cancellationtoken/examples/04-http-request/index.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/cancellationtoken/examples/04-http-request/index.ts b/cancellationtoken/examples/04-http-request/index.ts new file mode 100644 index 0000000..fa8186e --- /dev/null +++ b/cancellationtoken/examples/04-http-request/index.ts @@ -0,0 +1,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() +} |