diff --git a/async/async.d.ts b/async/async.d.ts
index adf6fe11be..56370c15dc 100644
--- a/async/async.d.ts
+++ b/async/async.d.ts
@@ -1,16 +1,23 @@
// Type definitions for Async 0.9.2
// Project: https://github.com/caolan/async
-// Definitions by: Boris Yankov
+// Definitions by: Boris Yankov , Arseniy Maximov
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface Dictionary { [key: string]: T; }
+// Common interface between Arrays and Array-like objects
+interface List {
+ [index: number]: T;
+ length: number;
+}
+
interface ErrorCallback { (err?: Error): void; }
interface AsyncResultCallback { (err: Error, result: T): void; }
interface AsyncResultArrayCallback { (err: Error, results: T[]): void; }
interface AsyncResultObjectCallback { (err: Error, results: Dictionary): void; }
interface AsyncIterator { (item: T, callback: ErrorCallback): void; }
+interface AsyncForEachOfIterator { (item: T, index: number, callback: ErrorCallback): void; }
interface AsyncResultIterator { (item: T, callback: AsyncResultCallback): void; }
interface AsyncMemoIterator { (memo: R, item: T, callback: AsyncResultCallback): void; }
@@ -61,6 +68,9 @@ interface Async {
each(arr: T[], iterator: AsyncIterator, callback: ErrorCallback): void;
eachSeries(arr: T[], iterator: AsyncIterator, callback: ErrorCallback): void;
eachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback: ErrorCallback): void;
+ forEachOf(obj: List, iterator: AsyncForEachOfIterator, callback: ErrorCallback): void;
+ forEachOfSeries(obj: List, iterator: AsyncForEachOfIterator, callback: ErrorCallback): void;
+ forEachOfLimit(obj: List, limit: number, iterator: AsyncForEachOfIterator, callback: ErrorCallback): void;
map(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultArrayCallback): any;
mapSeries(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultArrayCallback): any;
mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback: AsyncResultArrayCallback): any;