Mr. Simmons does it:
https://github.com/quartermaster/QSKit/blob/master/Classes/Foundation/NSNotificationCenter%2BQSKit.m

My understanding is that calling `dispatch_async` if you are already on the main thread will put the block at the end of the queue instead of executing it immediately. The docs say:

> This function is the fundamental mechanism for submitting blocks to a dispatch queue. Calls to this function always return immediately after the block has been submitted and never wait for the block to be invoked. The target queue determines whether the block is invoked serially or concurrently with respect to other blocks submitted to that same queue. Independent serial queues are processed concurrently with respect to each other.

@tLewisII any thoughts?