updated promise() constructor/guard to support multiple arguments