diff --git a/node_modules/p-timeout/index.js b/node_modules/p-timeout/index.js
new file mode 100644
index 0000000..fa48cc7
--- /dev/null
+++ b/node_modules/p-timeout/index.js
@@ -0,0 +1,36 @@
+'use strict';
+const pFinally = require('p-finally');
+
+class TimeoutError extends Error {
+	constructor(message) {
+		super(message);
+		this.name = 'TimeoutError';
+	}
+}
+
+module.exports = (promise, ms, fallback) => new Promise((resolve, reject) => {
+	if (typeof ms !== 'number' || ms < 0) {
+		throw new TypeError('Expected `ms` to be a positive number');
+	}
+
+	const timer = setTimeout(() => {
+		if (typeof fallback === 'function') {
+			resolve(fallback());
+			return;
+		}
+
+		const message = typeof fallback === 'string' ? fallback : `Promise timed out after ${ms} milliseconds`;
+		const err = fallback instanceof Error ? fallback : new TimeoutError(message);
+
+		reject(err);
+	}, ms);
+
+	pFinally(
+		promise.then(resolve, reject),
+		() => {
+			clearTimeout(timer);
+		}
+	);
+});
+
+module.exports.TimeoutError = TimeoutError;
diff --git a/node_modules/p-timeout/license b/node_modules/p-timeout/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/p-timeout/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/p-timeout/package.json b/node_modules/p-timeout/package.json
new file mode 100644
index 0000000..f7fc239
--- /dev/null
+++ b/node_modules/p-timeout/package.json
@@ -0,0 +1,75 @@
+{
+  "_from": "p-timeout@^1.1.1",
+  "_id": "p-timeout@1.2.1",
+  "_inBundle": false,
+  "_integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=",
+  "_location": "/p-timeout",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "p-timeout@^1.1.1",
+    "name": "p-timeout",
+    "escapedName": "p-timeout",
+    "rawSpec": "^1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "^1.1.1"
+  },
+  "_requiredBy": [
+    "/got",
+    "/p-event"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz",
+  "_shasum": "5eb3b353b7fce99f101a1038880bb054ebbea386",
+  "_spec": "p-timeout@^1.1.1",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\got",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-timeout/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "p-finally": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Timeout a promise after a specified amount of time",
+  "devDependencies": {
+    "ava": "*",
+    "delay": "^2.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-timeout#readme",
+  "keywords": [
+    "promise",
+    "timeout",
+    "error",
+    "invalidate",
+    "async",
+    "await",
+    "promises",
+    "time",
+    "out",
+    "cancel",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-timeout",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-timeout.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.2.1"
+}
diff --git a/node_modules/p-timeout/readme.md b/node_modules/p-timeout/readme.md
new file mode 100644
index 0000000..8913583
--- /dev/null
+++ b/node_modules/p-timeout/readme.md
@@ -0,0 +1,87 @@
+# p-timeout [![Build Status](https://travis-ci.org/sindresorhus/p-timeout.svg?branch=master)](https://travis-ci.org/sindresorhus/p-timeout)
+
+> Timeout a promise after a specified amount of time
+
+
+## Install
+
+```
+$ npm install p-timeout
+```
+
+
+## Usage
+
+```js
+const delay = require('delay');
+const pTimeout = require('p-timeout');
+
+const delayedPromise = delay(200);
+
+pTimeout(delayedPromise, 50).then(() => 'foo');
+//=> [TimeoutError: Promise timed out after 50 milliseconds]
+```
+
+
+## API
+
+### pTimeout(input, ms, [message | fallback])
+
+Returns a decorated `input` that times out after `ms` time.
+
+#### input
+
+Type: `Promise`
+
+Promise to decorate.
+
+#### ms
+
+Type: `number`
+
+Milliseconds before timing out.
+
+#### message
+
+Type: `string` `Error`<br>
+Default: `'Promise timed out after 50 milliseconds'`
+
+Specify a custom error message or error.
+
+If you do a custom error, it's recommended to sub-class `pTimeout.TimeoutError`.
+
+#### fallback
+
+Type: `Function`
+
+Do something other than rejecting with an error on timeout.
+
+You could for example retry:
+
+```js
+const delay = require('delay');
+const pTimeout = require('p-timeout');
+
+const delayedPromise = () => delay(200);
+
+pTimeout(delayedPromise(), 50, () => {
+	return pTimeout(delayedPromise(), 300);
+});
+```
+
+### pTimeout.TimeoutError
+
+Exposed for instance checking and sub-classing.
+
+
+## Related
+
+- [delay](https://github.com/sindresorhus/delay) - Delay a promise a specified amount of time
+- [p-min-delay](https://github.com/sindresorhus/p-min-delay) - Delay a promise a minimum amount of time
+- [p-retry](https://github.com/sindresorhus/p-retry) - Retry a promise-returning function
+- [More…](https://github.com/sindresorhus/promise-fun)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
