A protex is a mutex for Promises