Você pode envolvê-lo em uma subconsulta assim. O problema é que o MySQL não pode atualizar as linhas que também está consultando. Isso fará com que o MySQL use uma tabela temporária implicitamente para armazenar os ids que você deseja excluir.
DELETE FROM tasks
WHERE tasks.id IN
(
SELECT id FROM
(
SELECT tasks.id
FROM tasks
JOIN deadlines ON deadlines.id = deadline_id
WHERE DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW()
) AS taskstodelete
)