diff --git a/async/async.d.ts b/async/async.d.ts
index a8b38c5fc..6054e9a47 100644
--- a/async/async.d.ts
+++ b/async/async.d.ts
@@ -1,6 +1,6 @@
// Type definitions for Async 1.4.2
// Project: https://github.com/caolan/async
-// Definitions by: Boris Yankov , Arseniy Maximov
+// Definitions by: Boris Yankov , Arseniy Maximov , Joe Herman
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface Dictionary { [key: string]: T; }
@@ -10,7 +10,7 @@ interface AsyncResultCallback { (err: Error, result: T): void; }
interface AsyncResultArrayCallback { (err: Error, results: T[]): void; }
interface AsyncResultObjectCallback { (err: Error, results: Dictionary): void; }
-interface AsyncFunction { (callback: (err: Error, result?: T) => void): void; }
+interface AsyncFunction { (callback: (err?: Error, result?: T) => void): void; }
interface AsyncIterator { (item: T, callback: ErrorCallback): void; }
interface AsyncForEachOfIterator { (item: T, key: number, callback: ErrorCallback): void; }
interface AsyncResultIterator { (item: T, callback: AsyncResultCallback): void; }
@@ -85,15 +85,15 @@ interface Async {
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;
- filter(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- select(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- filterSeries(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- selectSeries(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- filterLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- selectLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- reject(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- rejectSeries(arr: T[], iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
- rejectLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: (results: T[]) => any): any;
+ filter(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ select(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ filterSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ selectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ filterLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ selectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ reject(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ rejectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
+ rejectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: (results: T[]) => any): any;
reduce(arr: T[], memo: R, iterator: AsyncMemoIterator, callback?: AsyncResultCallback): any;
inject(arr: T[], memo: R, iterator: AsyncMemoIterator, callback?: AsyncResultCallback): any;
foldl(arr: T[], memo: R, iterator: AsyncMemoIterator, callback?: AsyncResultCallback): any;
@@ -126,7 +126,7 @@ interface Async {
during(test: (testCallback : (error: Error, truth: boolean) => void) => void, fn: AsyncVoidFunction, callback: (err: any) => void): void;
doDuring(fn: AsyncVoidFunction, test: (testCallback: (error: Error, truth: boolean) => void) => void, callback: (err: any) => void): void;
forever(next: (errCallback : (err: Error) => void) => void, errBack: (err: Error) => void) : void;
- waterfall(tasks: Function[], callback?: (err: Error, result: any) => void): void;
+ waterfall(tasks: Function[], callback?: (err: Error, results?: any) => void): void;
compose(...fns: Function[]): void;
seq(...fns: Function[]): void;
applyEach(fns: Function[], argsAndCallback: any[]): void; // applyEach(fns, args..., callback). TS does not support ... for a middle argument. Callback is optional.