optionally move delegate messages off to a background thread

good illustration of when dispatch_sync is useful