Note that patter doesn't depend on any promise implementations