Allow before to be async and be called in implementations