DISCLAIMER: Using promises is a much better way to handle asynchronous situations. Use the advice in this post only as a last resort.
Although these are quick and easy they can really get over complicated producing a ever increasing indent to the code. This has the effect of making a pyramid like shape out of the whitespace when you turn it on it side:
This leads to a difficulty in readability. It also confuses what is in scope and out of scope. A refactoring might included named functions that makes it easier to see what is happening and understand scoping.