Parametize failure and read listeners in main lock in PromiseImpl