making deprecated work and a general promise lock