add hook async protocol