I wonder why in kong codes handle each plugins access phrase using coroutine while the other phrases do not?

As we can see in kong/init.lua, there is a function Kong.access() using coroutine.wrap(plugin.handler.access)(plugin.handler, plugin_conf) to handle access phrase, in the corresponding, Kong.header_filter() not doing this in the same way instead of doing by plugin.handler:header_filter(plugin_conf)

You could browse the blame log to find out: