signal promise callback