This API wraps an asynchronous function so that it can be called in a top-down manner within a fiber.
The API assumes that the function accepts a callback as its last parameter in the following format:
This is typical for virtually all asynchronous Node.js requests.
The API can also accept an object which contains a set of asynchronous functions, in which case it will act the same as the pjs.fiber.wrapAll() API.
A top-down function is returned.
If the callback receives an error object, an error is thrown.