diff --git a/promise/promise-tests.ts b/promise/promise-tests.ts
new file mode 100644
index 0000000000..140d170b1a
--- /dev/null
+++ b/promise/promise-tests.ts
@@ -0,0 +1,21 @@
+///
+
+var prom = new Promise((resolve, reject) => {
+ resolve(true);
+});
+
+var prom2 = new Promise((resolve, reject) => {
+ resolve(true);
+});
+
+prom.then((val) => {
+ console.log(val);
+}).catch(() => {
+
+});
+
+var prom3 = Promise.all([prom, prom2]);
+
+prom3.then((resolve: Array) => {
+
+});
diff --git a/promise/promise.d.ts b/promise/promise.d.ts
new file mode 100644
index 0000000000..9237b89088
--- /dev/null
+++ b/promise/promise.d.ts
@@ -0,0 +1,31 @@
+// Type definitions for promise v7.1.1
+// Project: https://www.promisejs.org/
+// Definitions by: Manuel Rueda
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+// Support AMD require
+declare module 'promise' {
+ export = Promise;
+}
+
+declare var Promise: Promise.Ipromise;
+
+declare module Promise {
+
+ export interface Ipromise {
+ new (resolver: (resolve: (value: T) => void, reject: (reason: any) => void) => void): IThenable;
+
+ resolve: (value: T) => IThenable;
+ reject: (value: T) => IThenable;
+ all: (array: Array>) => IThenable>;
+ denodeify: (fn: Function) => IThenable;
+ nodeify: (fn: Function) => Function;
+ }
+
+ export interface IThenable {
+ then(onFulfilled?: (value: T) => IThenable|R, onRejected?: (error: any) => IThenable|R): IThenable;
+ catch(onRejected?: (error: any) => IThenable|R): IThenable;
+ done(onFulfilled?: (value: T) => IThenable|R, onRejected?: (error: any) => IThenable|R): IThenable;
+ nodeify(callback: Function): IThenable;
+ }
+}