Hi! In GTD “Waiting For” is for delegation, so that you can track actions that depend on someone else. As such, it doesn’t make sense to move something to Waiting until it has actually been delegated. In your specific example, I would go for the option a below, but b also works.
a) Move “Order a book” to Waiting once you’ve ordered it (instead of checking off the action) In this case you don’t even need a project, which is good.
b) Once you complete “Order a book”, only then do you move “Receive a book” to Waiting. It