Originally \hyper@anchorstart uses one parameter but in draft mode it is redefined to use two parameters (\def\hyper@anchorstart#1#2{#2\Hy@xspace@end}) and here comes bug with natbib.
\documentclass{book}
\usepackage{natbib}
\usepackage[draft]{hyperref}
\begin{document}
\begin{thebibliography}{1}
\bibitem[{Awwad(2016)}]{sss}
x
\end{thebibliography}
\end{document}
Tracing shows that \hyper@anchorstart is with one parameter but expects two:
\hyper@natanchorstart #1->\Hy@raisedlink {\hyper@anchorstart {cite.#1}}
#1<-sss\@extra@b@citeb
\Hy@raisedlink ->
\hyper@anchorstart #1#2->#2\Hy@xspace@end
#1<-cite.sss\@extra@b@citeb
! Argument of \hyper@anchorstart has an extra }.
<inserted text>
\par
Originally
\hyper@anchorstartuses one parameter but indraftmode it is redefined to use two parameters (\def\hyper@anchorstart#1#2{#2\Hy@xspace@end}) and here comes bug with natbib.Tracing shows that
\hyper@anchorstartis with one parameter but expects two: