make signal global async safe