Runs given action no sooner than in the next event-loop iteration, after all micro-tasks have run.
action
Future<T> post<T>(FutureOr<T> Function() action) => Future.delayed(Duration.zero, action);