summaryrefslogtreecommitdiff
path: root/node_modules/resolve-alpn/index.js
diff options
context:
space:
mode:
authorLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
committerLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
commit703e03aba33f234712206769f57717ba7d92d23d (patch)
tree0041f04ccb75bd5379c764e9fe42249fffe75fc3 /node_modules/resolve-alpn/index.js
parentab6e257e6e9d9a483d7e86f220d8b209a2cd7753 (diff)
downloadFlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.gz
FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.zst
Added export_allowed file to make repository visible in cgit
Diffstat (limited to 'node_modules/resolve-alpn/index.js')
-rw-r--r--node_modules/resolve-alpn/index.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/node_modules/resolve-alpn/index.js b/node_modules/resolve-alpn/index.js
new file mode 100644
index 0000000..2d6c043
--- /dev/null
+++ b/node_modules/resolve-alpn/index.js
@@ -0,0 +1,43 @@
+'use strict';
+const tls = require('tls');
+
+module.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => {
+ let timeout = false;
+
+ let socket;
+
+ const callback = async () => {
+ await socketPromise;
+
+ socket.off('timeout', onTimeout);
+ socket.off('error', reject);
+
+ if (options.resolveSocket) {
+ resolve({alpnProtocol: socket.alpnProtocol, socket, timeout});
+
+ if (timeout) {
+ await Promise.resolve();
+ socket.emit('timeout');
+ }
+ } else {
+ socket.destroy();
+ resolve({alpnProtocol: socket.alpnProtocol, timeout});
+ }
+ };
+
+ const onTimeout = async () => {
+ timeout = true;
+ callback();
+ };
+
+ const socketPromise = (async () => {
+ try {
+ socket = await connect(options, callback);
+
+ socket.on('error', reject);
+ socket.once('timeout', onTimeout);
+ } catch (error) {
+ reject(error);
+ }
+ })();
+});