Due to TypeScript and flux's types being annoying and highly typesafe, we need an AsyncActionPayload which intentionally doesn't use the 'action' property. This looks a bit awkward, though for the rare cases we do actually fire async actions it should be fine enough.
The call signature changes slightly for async events, therefore this commit also updates its usages for async events.
The `fire()` function is to be used in a future commit.
Remove biased comment